node_modulesを除外しないWebpack


83

構築しているノードフレームワークにwebpackを使用しています(確かに、おそらくgulpを使用する必要があります)。EJSモジュールを含めると、node_modulesディレクトリを除外するように明示的に指示した場合でも、webpackはコンパイルされたソースにそれを含めます。

module.exports = {
    context: __dirname,
    target: 'node',
    // ...
    output: {
        libraryTarget: 'commonjs'
        // ...
    },
    module: {
        loaders: [
            {
                test: /\.js$/,
                exclude: /node_modules/,
                loader: 'babel-loader?{ "stage": 0, "optional": ["runtime"] }'
            }
        ]
    }
};

ご覧のとおり、JSファイルのテストがあり、node_modulesを除外するように指示しています。なぜ私の除外を無視するのですか?

回答:


180

あなただけ除いているように、あなたの設定ファイルから、それはそうですnode_modulesと解析されてからbabel-loaderではなく、同梱されているから。

node_modulesネイティブノードライブラリをバンドルから除外するには、次のことを行う必要があります。

  1. に追加target: 'node'しますwebpack.config.js。これにより、ネイティブノードモジュール(パス、fsなど)がバンドルから除外されます。
  2. 他のを除外するには、webpack-node-externalsを使用しますnode_modules

したがって、結果の構成ファイルは次のようになります。

var nodeExternals = require('webpack-node-externals');
...
module.exports = {
    ...
    target: 'node', // in order to ignore built-in modules like path, fs, etc. 
    externals: [nodeExternals()], // in order to ignore all modules in node_modules folder 
    ...
};

7
ブラウザに似たようなものはありますか?(つまり、ターゲット: 'ブラウザ')
Andrea.cabral 2016年

私は何をするのか理解しようとしてexclude: /node_modules/います。詳しく教えていただけますか?それを省くとどうなるでしょうか。
–ŠimeVidas 2017

正規表現です。省略した場合、node_modulesが含まれます
meredrica 2017

素晴らしい答えと能力。
オタク株

2
@ŠimeVidasdirnode_modulesbabel-loader実行から除外しますが、バンドルから除外しません
mlg87 2018

16

TypeScriptの使用中にこの問題が発生した場合skipLibCheck: trueは、tsconfig.jsonファイルを追加する必要がある場合があります。


7

絶対パスを使用してみてください:

exclude:path.resolve(__dirname, "node_modules")

プロジェクトがどのように構成されているかを教えていただけますか?ファイル構造
Alan

-1

以下の解決策を試してください:

exclude:path.resolve(__dirname, "node_modules")

4
StackOverflowへようこそ。他の答えに加えて付加価値を提供したほうがよいでしょう。この場合、別の(Alan)ユーザーがすでに5年前にそのソリューションを投稿しているため、あなたの回答は付加価値を提供しません。十分な評判が得られたら、投票する必要があります
Oleg Valter

-2

これは私のために働いた:

除外:[/ bower_components /、/ node_modules /]

module.loaders

自動的に適用されるローダーの配列。

各アイテムは次のプロパティを持つことができます。

テスト:満たす必要のある条件

除外:満たされてはならない条件

含める:満たす必要のある条件

ローダー:「!」の文字列 分離されたローダー

ローダー:文字列としてのローダーの配列

条件は、RegExp、絶対パスの開始、または「and」と組み合わせたこれらのいずれかの配列にすることができます。

http://webpack.github.io/docs/configuration.html#module-loadersを参照してください

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.