Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/webpack/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
customWebpackConfig在ng构建中不工作--prod在Angular中_Angular_Webpack - Fatal编程技术网

customWebpackConfig在ng构建中不工作--prod在Angular中

customWebpackConfig在ng构建中不工作--prod在Angular中,angular,webpack,Angular,Webpack,我正在尝试从Angular 7应用程序中的html文件中删除不必要的Cypress属性 我找到了这个 因此,我在我的angular.json中添加了: "build": { "builder": "angular-cli-builders:custom-webpack-browser", "options": { "customWebpackConfig": { "path": "./webpack/webpack.extra.js", "mergeStr

我正在尝试从Angular 7应用程序中的html文件中删除不必要的Cypress属性

我找到了这个

因此,我在我的
angular.json
中添加了:

"build": {
  "builder": "angular-cli-builders:custom-webpack-browser",
  "options": {
    "customWebpackConfig": {
      "path": "./webpack/webpack.extra.js",
      "mergeStrategies": {
        "externals": "append"
      }
    },
当我使用
ngbuild
时,属性会被删除,但是当我使用
ngbuild--prod
时,属性不会被删除,为什么

我也尝试在这里添加,但没有成功:

 "configurations": {
   "production": {
     "customWebpackConfig": { [...]

@angular builders/custom webpack
根据您的构建有四个选项(通用、开发等)。事实上,一旦你阅读了,这是很容易的

对于Angular 8+,此问题中引用的已过期

首先,不推荐使用
angularcli builders
npm包。您将需要适合您的角度版本的

然后,如果构建使用的是提前编译(大多数生产配置都会这样),那么在source.html文件中拦截和替换
data-cy
属性是非常困难的。我能够可靠地使其工作的唯一方法是检查build.js输出,并替换其中的属性

以下是angular 9的工作
angular.json
文件的相关部分:

{
“项目”:{
“datacy”:{
“根”:“,
“sourceRoot”:“src”,
“项目类型”:“应用程序”,
“建筑师”:{
“构建”:{
“生成器”:“@angular builders/自定义网页包:浏览器”,
“选择”:{
“源地图”:正确,
“namedChunks”:正确
},
“配置”:{
“生产”:{
“customWebpackConfig”:{
“路径”:“/webpack config.prod.ts”,
“合并战略”:{
“模块规则”:“前置”
}
},
“优化”:没错,
“aot”:是的,
...
webpack.config.prod.ts

import*作为“path”的路径;
从“网页包”导入*作为网页包;
导出默认值{
模块:{
规则:[{
测试:/\.js$/,,
用法:[{loader:path.resolve('./data-cy-loader.ts')}],
}],
},
}作为网页包。配置;
data-cy-loader.ts

/*
HTML格式看起来像
在javascript字符串中内联,看起来像
编译AOT后,元素属性将转换为数组:
[[“类”、“cssClassName”]、[“数据类型”、“值”]、…]
数据cy属性可能出现在此数组的开头、中间或结尾。
*/
导出默认值(源:字符串)=>{
if(source.indexOf('data-cy')>=0){
返回源。替换(/\[“数据cy”?,“([^”]*)”\],/g',)/[“数据cy”,“…”],变体
.替换(/,?\[“数据cy”,?“([^“]*)”\]/g,)/,[“数据cy”,“…”])变体
.替换(/(\[“”)数据cy(=|(“,)\?”([^“]*)”(\])?/g,”;/[“数据cy”,“…”])和html变体
}
返回源;
};