当我尝试在 docker 中构建 angular7 项目时,大约需要 40 分钟。需要40分钟的线路是
ng 构建 --prod
92% 块资产优化 TerserPlugin
我在同一台笔记本电脑上在 docker 外部运行了 ng build --prod ,需要 2 分钟。
我尝试添加 --build-optimizer false
和 --sourceMap=false
没有任何区别
这是我的 Dockerfile
FROM node:carbon
WORKDIR /usr/src/app
COPY package.json package-lock.json ./
RUN npm install
RUN npm install -g @angular/[email protected] /cdn-cgi/l/email-protection
COPY . .
RUN ng build --prod
EXPOSE 4200
CMD [ "npm", "start" ]
HEALTHCHECK --interval=5s --timeout=30s --retries=20 CMD curl --fail http://localhost:4200 || exit 1
这个构建速度极慢的问题是几乎总是与构建过程缺乏内存有关。
Node不会为单个进程分配大量内存(32位系统上为512MB,64位系统上为1GB),但运行时ng build
生产设置会占用大量内存。
您可以使用节点参数max_old_space_size
设置允许进程使用多少 RAM,但必须将参数直接传递给节点,因此替换
ng build --prod
with
node --max_old_space_size=8192 ./node_modules/@angular/cli/bin/ng build --prod
它将为该进程分配高达 8GB 的 RAM,这将使其运行速度更快。
您还可以将其添加到 package.json 中的脚本中:
"scripts": {
....
"build:prod": "node --max_old_space_size=4096 ./node_modules/@angular/cli/bin/ng build --prod"
}
(如果增加内存限制不起作用,请尝试运行ng build --prod --verbose
查看编译不同阶段的确切时间)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)