2017-03-15 21 views
1

自分のアプリケーション内に、自分自身のnode_modules/などを含むサブプロジェクトがあります。スクリプトの点でメインプロジェクトとは隔離されていますが、その中に置かなければなりません。 これは意味をなさないかもしれませんが、実際はです。webpackからディレクトリを除外する

問題は、node_modules(少なくとも)がwebpackに干渉していることです。 Duplicate IdentifierCannot redeclare block-scoped variable、...

サブプロジェクトディレクトリを削除するだけで、バンドルが機能し始めます。


ベストソリューションのシナリオは、webpack設定に除外項目を追加することですが、そのようには機能しません。

どうすればこの問題を解決できますか?私は解決策を見つけることができません!

+0

を使用してそこから何かをインポートしない限り、サブディレクトリに移動します。おそらく、あなたのwebpack設定のどこかに問題があります。おそらく、 '[resolve'](https://webpack.js.org/configuration/resolve/)の設定が間違っています。 –

答えて

0

ローダーで除外小道具を設定する必要があります。

https://webpack.js.org/configuration/module/#rule-exclude

そしてNODE_ENVとスクリプトを使用して、モジュールをバンドルするかしないときに制御することができます。私はwebpackが毎回すべてのnode_modulesをビルドするのを待つのではなく、開発環境にこれを使用します。

NODE_ENVを確認し、ノードモジュールをビルドするか、ローダーの除外条件を使用しない場合は、単純なインラインです。

var FASTBUILD = process.env.NODE_ENV == 'fastbuild'; 
//This example is for loading all js 
module: { 
    rules: [ 
     FASTBUILD ? {test: /\.js?$/, loader: "your-loader-here", exclude: path.resolve(__dirname, "./node_modules")} : {test: /\.js?$/, loader: your-loader-here"} 
    ] 
} 

そして、あなたはちょうどnpm run devを使用するので、あなたのpackage.jsonでこれを持つことができます。

"scripts": { 
//this if for build WITHOUT node_modules 
    "dev": "set NODE_ENV=fastbuild&&webpack --watch" 
    } 

PS:これは、Windows用に設定されており、WebPACKのは気にしないのWebPACK 2.2

関連する問題