Help us understand the problem. What is going on with this article?

npm dedupeでモジュールの重複を解消する

More than 1 year has passed since last update.

フロントの開発をしている際に独自のライブラリを集めたローカルのモジュールを作成することがあります。
そんなときにローカルモジュールで依存しているモジュールと、使う側でのモジュールが重複してしまうことがあります。

たとえば以下のような構成

parent (depends on hoge@1.0.X)
 ├ node_modules
 |  └ hoge@1.0.7
 └ local_modules
    └ child (depends on hoge@~1.0.9)
       └ node_modules
          └ hoge@1.0.10

モジュールによっては重複してバンドルしてしまうと思わぬ動作をしてしまいます。
(自分の環境ではVue.jsが重複してバンドルされてしまいエラーとなった :sweat:)

そんな重複を解決してくれる便利コマンドがnpm dedupeです。
https://docs.npmjs.com/cli/dedupe

上記の構成でnpm dedupeを実行すると以下のように解消してくれます。

parent (depends on hoge@1.0.X)
 ├ node_modules
 |  └ hoge@1.0.10
 └ local_modules
    └ child (depends on hoge@~1.0.9)

注意点としてはローカルモジュールをwebpack等を使ってビルドする際に依存モジュールを外から読み込むように設定してください。
ビルドされたjsファイルにモジュールが含まれてたら意味ないですからね :sunglasses:

webpackでモジュールを外部参照する方法はexternalsを参照

おまけ

npmじゃなくてyarn使えば重複はない

参考サイト

http://yosuke-furukawa.hatenablog.com/entry/2014/06/10/100410
https://docs.npmjs.com/cli/dedupe
https://qiita.com/youkaiantena/items/be4fb46ac7f5af2de2fb
https://yarnpkg.com/lang/en/docs/cli/dedupe/

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした