customWebpackConfig在ng构建中不工作--prod在Angular中
我正在尝试从Angular 7应用程序中的html文件中删除不必要的Cypress属性 我找到了这个 因此,我在我的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.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变体
}
返回源;
};