2017-07-06 11 views
1

をtranspilingメインと依存関係は、私は先週、次の問題を開いたが、誰も答えを知っているように見えるん:WebPACKのバベルjsnext:

私は本当に何を理解していませんwebpack/babel-loaderの現在のステータスは、node_modulesのtranspiling依存関係にありますが、誰でも明示していただけますか?私はどこにでも開かれたすべての問題にこだわっていました。

  1. jsnext:mainファイルをtranspiling webpack/babel-loaderですか?
  2. そうならば、node_modulesキーを中に除外されている場合でもnode_modulesjsnext:mainファイルをtranspiling webpack/babel-loaderのですか?

私の状況:私の依存関係package.json

rules: [{ 
    test: /\.(js|mjs)$/i, 
    exclude: [/node_modules/], 
    use: [{ 
     loader: 'babel-loader', //settings specified in package.json 
    },{ 
     loader: 'eslint-loader', //settings specified in package.json 
    } 
}] 

私が試した:

"main": "index.js", <= not working (not transpiled) 
"jsnext:main": "index.js", <= not working (not transpiled) 
"module": "index.js", <= not working (not transpiled) 

どちらexclude: [/node_modules/],を削除せずに取り組んでいるが、これは任意の中規模から大規模に使用することはできません無限のコンパイル時間のために大規模なプロジェクトです。

しかし、なぜhttps://github.com/lodash/lodash/blob/es/package.jsonが私のhttps://github.com/damianobarbati/react-create-app/blob/master/package.jsonと異なるのですか? lodash-esがnode_modulesにあっても(そして除外されていても)私のreact-create-appはそうではありません:ヘルプ!

答えて

1

node_modulesをルールから除外した場合、babel-loadernode_modulesに何も含まれていません。 jsnext:mainmoduleのようなフィールドは、ローダ/ルールとは関係ありません。パッケージがインポートされると、webpackはresolve.mainFieldsに基づいてどのファイルを使用するかを決定し、そのファイルに適用するルールをチェックします。通常、これらのファイルは、ESモジュール(Rollup - pkg.moduleを参照)が含まれていることを除いて、すでにトランスイルされています。

あなたがmodulejsnext:mainフィールドを持つ任意のモジュールをtranspileしたい場合は、モジュールは(includeexcludeも機能を受け入れる)が含まれるべきか否かを決定するジェイソン・ミラーdevelopit/transpile-esnext-modules.jsからルールを使用することができます。

+0

なぜlodash-esは蒸留されていますか?ちょうどそこにES6ファイル。そのルールがなくても、Webpackはそれを飛ばしています:| –

+0

彼らはすでに蒸散されています。 GitHubリポジトリにあるものは、npmに公開されているものではありません。公開されたソース[unpkg-lodash](https://unpkg.com/[email protected]/lodash.js)(または '。/ node_modules/lodash/lodash.js'を見てください)を参照してください。ほとんどの図書館は現代的な機能を備えたソースを作成し、公開する前に必要なファイルを作成します。良い例はReduxであり、単純な[構築プロセス](https://github.com/reactjs/redux/blob/c1953b04cf48b2973aa8e2197d5b46ec36adbd59/package.json#L22-L26)を持っています。公開されている出力ディレクトリ( 'es'、' lib'、 'dist')は、' .gitignore'でもあります。 –

関連する問題