Angular CLI 自定义 webpack 配置

Angular CLI custom webpack config

在之前的 Angular 版本中,有一个 eject 的选项,因此您可以根据需要修改您的 webpack 配置。
此功能最常见的用例之一是添加自定义 webpack 加载程序。

在 Angular 6 中这个选项已被删除,所以目前几乎没有办法获得 webpack 配置(除了在 angular 源代码中查找)。

是否有任何方法可以将自定义 webpack 配置添加到使用 @angular/cli 6+ 的 Angular 应用程序?或者,有没有什么方法可以 "eject" webpack 配置新的 Angular CLI 在幕后使用?

您可以使用 angular-builders 库,它允许您使用自定义 webpack 配置扩展现有的 browserserver 目标(以及更多)。

用法很简单:

  1. 安装库:npm i -D @angular-builders/custom-webpack

  2. 修改你的angular.json:

    "architect": {
       ...
       "build": {
           "builder": "@angular-builders/custom-webpack:browser"
           "options": {
                  "customWebpackConfig": {
                     "path": "./extra-webpack.config.js",
                     "replaceDuplicatePlugins": true
                  },
                  "outputPath": "dist/my-cool-library",
                  "index": "src/index.html",
                  "main": "src/main.ts",
                  "polyfills": "src/polyfills.ts",
                  "tsConfig": "src/tsconfig.app.json"
                  ...
           }
    
  3. extra-webpack.config.js 添加到应用程序的根目录中

  4. 把额外的配置放在extra-webpack.config.js里面(只是一个普通的webpack配置)

对于 Angular 8 @angular-builders/dev-server:generic 已弃用,使用 @angular-builders/custom-webpack:dev-server 代替,来源:https://github.com/just-jeb/angular-builders/blob/master/MIGRATION.MD.

除此之外,您可能需要 运行 npm i @angular-devkit/architect@latest @angular-devkit/build-angular@latest @angular-devkit/core@latest @angular-devkit/schematics@latest 如果迁移后您会看到以下错误 architect_1.createBuilder is not a function