NX Workspace中@nrwl/webpack:webpack的generateIndexHtml属性失效问题
解决NX Workspace自定义html-webpack-plugin导致index.html冲突的问题
问题根源
即使在@nrwl/webpack:webpack执行器中设置了generateIndexHtml: false,只要project.json里配置了index字段,NX仍会自动将指定的index文件复制到输出目录,和自定义HTMLWebpackPlugin生成的index.html造成文件内容冲突,触发报错:
ERROR in Conflict: Multiple assets emit different content to the same filename index.html
解决方案
- 移除
project.json中的index配置项
删除执行器选项里的"index": "apps/webcp/src/index.html",避免NX自动拷贝index文件到输出目录。 - 保留
generateIndexHtml: false配置
确保该配置保持为false,关闭NX自带的index.html生成逻辑。
修改后的project.json配置示例
"executor": "@nrwl/webpack:webpack", "outputs": ["{options.outputPath}"], "defaultConfiguration": "production", "options": { "compiler": "babel", "outputPath": "dist/apps/webcp", "generateIndexHtml": false, "baseHref": "/", "main": "apps/webcp/src/app/index.js", "polyfills": "apps/webcp/src/polyfills.ts", "tsConfig": "apps/webcp/tsconfig.app.json", "scripts": [], "webpackConfig": "apps/webcp/webpack.config.js" },
验证自定义HTMLWebpackPlugin配置
确保你的自定义插件模板路径正确,环境变量env.partnerKey能正常读取:
new HTMLWebpackPlugin({ template: path.resolve( `apps/webcp/partners/${env.partnerKey}/assets/index.html` ), filename: 'index.html', }),
完成上述修改后,重新编译项目即可解决冲突问题。
内容的提问来源于stack exchange,提问作者Abdel Rahman
相关产品推荐
相关产品推荐

