web-dev-qa-db-ja.com

「モジュール」package.jsonフィールドの目的は何ですか?

いくつかのnpmパッケージ( vueの例 )でpackage.jsonにpkg.moduleフィールドが含まれているのを見ました。 "module"は公式のnpmプロパティですか、それとも何らかの規則ですか?これに関するドキュメントはどこかにありますか?何のために? esnextパス?バンドルされていないモジュールパス?

74
ryanve

"module"は公式のnpmプロパティですか、それとも何らかの規則ですか?

提案 ですが、事実上の使用のためにサポートされる可能性があります。

これに関するドキュメントはどこかにありますか?

実際、あります ここ であり、後で削除されます ここ です。

何のために?

ノードでのES6モジュールの相互運用性。追加の議論は here および here にあります。そして、ここに ブログ投稿 Rich Harrisがそれについてもっと語っています。

88
Josh Habdas

これは、ESM(ECMAScriptモジュール)検出用のバンドラーツールによって使用されます。 Rollup documentation はそれをかなりうまく言っています:

package.jsonファイルにもmoduleフィールドがある場合、 Rollupwebpack 2 などのES6対応ツールは ES6モジュールバージョンをインポート になります。

Rollup 1.0のこの記事 は別の言い方をしています:

mainフィールドは、requireを使用しているNodeユーザーにUMDバージョンが確実に提供されるようにします。 moduleフィールドは公式のnpm機能ではなく、ライブラリのESMバージョンをインポートする方法を指定するためのバンドラー間の一般的な規則です。

pkg.moduleの詳細については、 Rollup Github Wiki および webpack Docs を参照してください。

25
Jack Steam