You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Angular CLI的ng serve中自动执行Webpack文件合并并写入磁盘?

把JSON合并与磁盘写入整合到Angular CLI的ng serve流程中

当然可以实现!Angular CLI虽然默认封装了Webpack配置,但我们可以通过自定义构建器扩展它,把你的JSON合并和磁盘写入逻辑直接整合到ng serve的工作流里,不用再手动维护两个独立脚本,还能自动监听源文件变化并更新输出。

下面是具体步骤:

1. 安装必要依赖

首先需要安装Angular CLI的自定义Webpack构建器,以及你已经在使用的两个插件(如果还没安装的话):

npm install --save-dev @angular-builders/custom-webpack merge-json-webpack-plugin write-file-webpack-plugin

2. 创建自定义Webpack配置文件

在项目根目录新建一个webpack.custom.js文件,把你的JSON合并和磁盘写入逻辑放进去:

const MergeJsonWebpackPlugin = require('merge-json-webpack-plugin');
const WriteFilePlugin = require('write-file-webpack-plugin');

module.exports = {
  plugins: [
    // 配置你的JSON合并规则,替换成你实际的输入输出路径
    new MergeJsonWebpackPlugin({
      files: [
        {
          input: ['./src/assets/i18n/*.json'], // 你的源JSON文件路径
          output: './src/assets/i18n/merged.json' // 合并后的输出路径
        }
      ]
    }),
    // 配置WriteFilePlugin,确保合并后的文件写入磁盘
    new WriteFilePlugin({
      // 可选:只监听合并后的JSON文件,避免写入所有文件影响性能
      test: /merged\.json$/
    })
  ]
};

3. 修改Angular CLI的构建配置

打开项目根目录的angular.json(Angular 6+版本),找到你的项目配置节点,修改architect下的build和serve配置,替换默认的构建器为自定义Webpack构建器:

修改serve配置

"serve": {
  "builder": "@angular-builders/custom-webpack:dev-server",
  "options": {
    "customWebpackConfig": {
      "path": "./webpack.custom.js" // 指定我们刚才创建的配置文件
    },
    "browserTarget": "你的项目名称:build",
    "port": 9978 // 保持你原来的端口配置
  }
}

修改build配置(确保生产构建也生效)

"build": {
  "builder": "@angular-builders/custom-webpack:browser",
  "options": {
    "customWebpackConfig": {
      "path": "./webpack.custom.js"
    },
    // 保留你原来的build配置(比如outputPath、index、assets等)
  }
}

如果你用的是Angular 5及以下版本,配置文件是.angular-cli.json,需要修改defaults.build.builder和defaults.serve.builder为@angular-builders/custom-webpack:dev-server,并添加customWebpackConfig参数,逻辑是一致的。

4. 测试效果

现在直接运行npm start(也就是你的ng serve --port 9978脚本):

  • Webpack会自动执行JSON合并操作
  • WriteFilePlugin会把合并后的文件写入到你指定的assets目录
  • 当源JSON文件更新时,LiveReload会自动触发重新合并和写入,无需重启脚本

为什么之前的方法不生效?

因为ng serve默认使用Angular CLI封装好的Webpack配置,不会加载你自己单独的webpack.config.js,所以你的两个插件并没有被加入到构建流程中。通过自定义构建器,我们让Angular CLI加载了扩展配置,把插件整合到了它的原生构建链里。

内容的提问来源于stack exchange,提问作者Rodrigo Martinez

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 09:52:49