2017-03-15 104 views
1

我的应用程序中有一个子项目,它包含自己的node_modules/等等。它在脚本方面与主要项目隔离,但应该位于其中。 这可能没有道理,但它的确是从webpack中排除目录

问题是,node_modules(至少)会干扰webpack。我得到的错误如Duplicate Identifier,Cannot redeclare block-scoped variable,...

通过简单地删除子项目目录,捆绑开始工作。


最好的解决方案是在webpack配置文件中添加一个排除条目,但事情并非如此。

我该如何解决这个问题?我找不到解决方案!

+0

的WebPack不关心子目录,除非您从中导入某些内容。这个问题可能是你的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"} 
    ] 
} 

而且你可以拥有这在你的package.json,所以你只需要使用npm run dev

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

PS:此配置为Windows和使用的WebPack 2.2