在不安装devDependencies的情况下为生产构建Angular

Scu*_*Kay 7 production build npm angular

我目前正在尝试创建一个Docker容器来构建我的生产Angular应用程序.我正在使用npm.我只想安装依赖项(所以没有devDependencies),所以我想这样做:

npm install --only=prod ng build project-name --prod

唯一的问题是我错过了很多软件包,例如@ angular/cli和@ angular-devkit/build-angular for build.我在互联网上找不到任何好的解决方案,但我不希望我的构建包含所有的devDependencies.另外,我不希望我的生成版本包含构建所需的任何包.这有一个很好的解决方案吗?

fab*_*i_k 8

不要担心你的依赖.

使用@ angular/cli via触发生产构建时

ng build --prod
Run Code Online (Sandbox Code Playgroud)

Angular会将未使用的包裹和代码从树丛中解脱出来!有关您可以设置的所有构建选项,请参阅https://github.com/angular/angular-cli/wiki/build.

您唯一需要考虑的是,如何使用您的包以及您的依赖项是否也支持树形图. 避免进口如:

import * as xy from 'packageXY';
Run Code Online (Sandbox Code Playgroud)

另一个提示是npm包Webpack-Bundle-Analyzer 执行这些命令以检查/延迟你的包:

npm i webpack-bundle-analyzer

ng build --prod --stats-json

cd dist 

webpack-bundle-analyzer stats.json
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

  • 构建管道中的持续集成性能如何?npm install 运行大约需要 5 分钟,例如安装诸如 cypress 之类的东西。也许我可以尝试“npm ci”而不是“npm install”,或者我可以将我的开发依赖项变成非开发依赖项。编辑:也可以试试 npm-cache 吗? (4认同)