Lud*_*net 6 npm typescript angular angular-aot
我有一个项目,其中几个前端共享一个公共库。
这些项目的模块依赖性由npm管理。
因此,在每个项目的package.json中,我都有:
"dependencies": {
"mylib": "file:../<...path...>/mylib",
...other deps...
},
Run Code Online (Sandbox Code Playgroud)
我将“ mylib”用于两个目的:
直到现在,我一直在使用npm 3.3.12并在运行之后使用npm installmylib的角度依赖关系,该角度依赖关系在我的顶级项目的node_modules目录下。
所以,例如
node_modules
@angular
core
common
....
mylib
Run Code Online (Sandbox Code Playgroud)
现在,使用npm 5.4.2,我有:
node_modules
mylib
node_modules
@angular
core
common
Run Code Online (Sandbox Code Playgroud)
这会在我的构建过程中引起很多问题,它需要通过添加诸如以下指令来进一步配置打字稿:
"baseUrl": "",
"paths": {
"@angular/common": ["node_modules/mylib/node_modules/@angular/common/"],
"@angular/core": ["node_modules/mylib/node_modules/@angular/core/"],
"@angular/compiler": ["node_modules/mylib/node_modules/@angular/compiler/"],
"@angular/compiler-cli": ["node_modules/mylib/node_modules/@angular/compiler-cli/"],
"@angular/forms": ["node_modules/mylib/node_modules/@angular/forms/"],
"@angular/http": ["node_modules/mylib/node_modules/@angular/http/"],
"@angular/platform-browser": ["node_modules/mylib/node_modules/@angular/platform-browser/"],
"@angular/platform-browser/animations": ["node_modules/mylib/node_modules/@angular/platform-browser/animations/"],
"@angular/platform-browser-dynamic": ["node_modules/mylib/node_modules/@angular/platform-browser-dynamic/"],
"@angular/router": ["node_modules/mylib/node_modules/@angular/router/"],
"primeng/primeng": ["node_modules/mylib/node_modules/primeng/primeng"],
"rxjs/Rx": ["node_modules/mylib/node_modules/rxjs/Rx"]
}
Run Code Online (Sandbox Code Playgroud)
在tsconfig.json中
当您必须对AOT,汇总等进行类似的配置时,这真的很烦人。
我尝试使用npm重复数据删除来简化此操作。由于项目有很多依赖项,因此其中一个项目需要超过1000万个依赖项:
npm dedupe
...
...
removed 824 packages and moved 1020 packages in 623.196s
Run Code Online (Sandbox Code Playgroud)
是否有一种标准有效的方法来使与以前相同的依赖关系平坦化?npm Dedupe可以完成这项工作,但是要花费很多时间,这不是可接受的选择。
作为替代方案,npm您可能希望切换为使用yarn。默认情况下,应该对模块进行重复数据删除。首先删除现有node_modules文件夹,然后执行yarn install。
您也可以强制yarn执行固定安装(yarn install --flat),但在这种情况下,仅进行普通安装就足够了。
将yarn.lock文件添加到版本控制中,然后其他所有签出将被锁定为相同的模块版本(除非这样做yarn upgrade)。
| 归档时间: |
|
| 查看次数: |
2377 次 |
| 最近记录: |