在我们的 ci 管道中,我尝试使用 pnpm 而不是 npm 作为包管理器,但postinstall用于编译 ivy 不兼容库的脚本未按预期运行。
控制台输出显示安装后脚本已执行,但随后该pnpm install过程完成但未执行 ngcc。
devDependencies:
+ @angular-devkit/build-angular 0.1001.7
+ @angular-devkit/build-ng-packagr 0.1001.7
+ @angular/cli 10.1.7
+ @angular/compiler-cli 10.2.1
+ @angular/language-service 10.2.1
+ @ngxs/devtools-plugin 3.7.1
+ @nrwl/cli 10.4.4
+ @nrwl/cypress 10.3.1
+ @nrwl/jest 10.3.1
+ @nrwl/workspace 10.3.1
+ @types/jest 26.0.8
+ @types/leaflet 1.5.19
+ @types/node 14.0.27
+ codelyzer 5.2.2
+ cypress 4.12.1
+ cypress-localstorage-commands 1.3.0
+ dotenv 8.2.0
+ eslint 7.3.1
+ husky 4.3.5
+ jest 26.2.2
+ jest-preset-angular 8.3.1
+ lint-staged 10.5.3
+ ng-packagr 10.1.2
+ prettier 2.0.5
+ ts-jest 26.4.0
+ ts-node 8.10.2
+ tslint 6.1.3
+ typescript 4.0.5
> package@version postinstall /home/...
> ngcc --properties es2015
Run Code Online (Sandbox Code Playgroud)
这就是所发生的一切。有人能帮我吗?
尝试这个:
更新脚本ngcc中的命令postinstall以包含--loglevel debug.
这会让您知道 NGCC 正在做什么,即使它没有找到任何可供分析的入口点(这可能会发生,因为 PNPM 以 NGCC 无法使用的方式构造 node_modules);
.npmrc在项目的根目录中创建(或更新)文件以包含以下内容:
node-linker=hoisted
Run Code Online (Sandbox Code Playgroud)
这指示 PNPM 使用不带符号链接的平面 node_modules(更多信息)。别担心,PNPM 的速度不仅仅来自于其隔离(符号链接)依赖策略。在我的测试中,提升与隔离在时间上非常相似。
删除项目的整个 node_modules 目录并使用pnpm install.
您应该看到 NGCC 的输出(希望)告诉您它找到了入口点并详细说明了它的处理过程。
| 归档时间: |
|
| 查看次数: |
1280 次 |
| 最近记录: |