从Webpack中排除目录

3
我有一个应用程序中的子项目,其中包含其自己的node_modules/等文件夹。它在脚本方面与主项目隔离,但应该在其中。这可能听起来不合理,但是事实确实如此。 问题是,node_modules(至少)正在干扰webpack。我收到类似于Duplicate IdentifierCannot redeclare block-scoped variable等错误。
通过简单地删除子项目目录,打包开始工作了。
最好的解决方案是在webpack配置中添加排除条目,但事情并非如此运作。
我该如何解决这个问题?我找不到解决方案!

Webpack 不会关心子目录,除非你从中导入了某些内容。问题可能出现在你的 webpack 配置中,可能是 resolve 配置错误。 - Michael Jungo
1个回答

0

你需要在你的加载器中设置排除属性。

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

你可以使用 NODE_ENV 和脚本来控制何时打包模块。我在开发环境中使用这个方法,而不是每次等待 webpack 构建所有 node_modules。

这是一个简单的内联 if 语句,通过在加载器中使用排除条件来检查 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"
  }

提示:此配置适用于 Windows 并使用 Webpack 2.2


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接