有没有办法自定义输出目录,其中一些延迟加载的块将被存储?默认情况下,所有工件都转到dist
文件夹。但是我需要将它们中的一些存储在dist
的子目录中(这些是将要自定义的模块的块,并且客户端希望将它们分开)。
示例:
在:
后:
我对Angular很新,似乎自定义构建输出的唯一方法是执行ng eject
,并完全控制构建配置,这似乎并不理想。但即便如此,我也不确定从哪里开始。
答案 0 :(得分:1)
查看NRWL的NX,了解如何在应用程序和库中分离构建企业角度应用程序。您的客户可能希望与他相关的代码位于lib而不是app本身。对于lib,您可以定义一个自己的tsconfig,它扩展了主项目的tsconfig。以下是一个示例:https://github.com/nrwl/nx-examples/blob/master/libs/login/tsconfig.lib.json
注意这一行
"outDir": "../../out-tsc/libs/login",
指定输出的构建位置。
答案 1 :(得分:0)
对于 Angular 7+,您可以使用 @angular-builders/custom-webpack。
以下是 Angular 12 的使用方法:
安装@angular-builder/custom-webpack:
npm i -D @angular-builders/custom-webpack
更新 angular.json
以使用自定义 webpack 文件:
"projects": {
...
"example-app": {
...
"architect": {
...
"build": {
"builder": "@angular-builders/custom-webpack:browser",
"options": {
"customWebpackConfig": {
"path": "./extra-webpack.config.js"
}
}
}
}
}
}
在项目根目录下创建“extra-webpack.config.js”。根据需要更新文件的大小写值。这是来自 webpack Output documentation
的修改示例module.exports = {
output: {
chunkFilename: (pathData) => {
let fileName;
switch (pathData.chunk.id) {
case 1:
fileName = 'custom_dir/[name].js';
break;
case 3:
fileName = 'custom_dir/[name].js';
break;
default:
fileName = '[name].js';
}
return fileName;
}
}
};
运行 ng build
以生成带有子目录的 dist 文件夹。