有了angular 9和新的编译引擎IVY,我的CI生成时间大大增加了。这当然是因为ngcc
已在许多模块上运行。
例如
Compiling @angular/core : es2015 as esm2015
Compiling @angular/common : es2015 as esm2015
...
我以为ngcc
将已编译的库缓存在node_modules
中,但是我的node_modules
被缓存在CI作业上,并且仍在进行编译,因此不可能。
为避免在每次构建中使用ngcc
重新编译所有模块,我应该缓存什么路径?
答案 0 :(得分:0)
ngcc --properties es2015 browser module main --first-only --create-ivy-entry-points
或者作为你在 package.json
中构建的部分
{
"scripts": {
"postinstall": "ngcc --properties es2015 browser module main --first-only --create-ivy-entry-points"
}
}
一些参考配置Travis to
# custom caching for .travis.yml
install:
- npm ci
# keep the npm cache around to speed up installs
cache:
directories:
- "$HOME/.npm"
# you can add other
选项 2: 使用 yarn 或 pnpm 速度更快
pnpm install
// or
yarn install
// or
npm install --prefer-offline --no-audit
答案 1 :(得分:0)
简而言之,你不能那样做。当前版本的 ngcc 不检查任何更改,并且总是在调用 ngcc 命令时重新编译所有包。这种情况可以在未来使用 angular linker 解决,但不确定,它肯定会缩短构建时间。
答案 2 :(得分:0)
在每次运行之间保留 package-lock.json
和文件夹 node_modules/
。我希望您不要每次都以全新的形象运行。
如果 package.json
或 package-lock.json
在下一个 CI 构建中更新,则只会预处理和安装更新的那些。其他的就不会再安装了。
关于 package-lock.json 和 node_modules 文件夹有各种做和不做的准则。你会在互联网上找到很多关于它的阅读,我不打算参与
<块引用>经验法则:将 package-lock.json
和 node_modules
放在一起
基本上一个包被安装(在 package.json 中提到)如果