如何在 nodejs 中管理依赖项的版本控制?



我们一直是一个Windows商店,主要依靠Visual Studio作为我们的IDE和构建工具。我们已经开始探索使用 Angular 和 node,以及 angular-cli。

我们有一个依赖于"angular-cli"的项目:"1.0.0-beta.10"。我试图让它在新机器上构建。

我安装了nodejs,然后使用npm进行了angular-cli的全局安装:

npm install -g angular-cli

然后我尝试做一个构建:

ng build

我收到一个错误:

It seems like you're using a project generated using an old version of the Angular CLI.
The latest CLI now uses webpack and has a lot of improvements including a simpler
workflow, a faster build, and smaller bundles.
To get more info, including a step-by-step guide to upgrade the CLI, follow this link:
https://github.com/angular/angular-cli/wiki/Upgrading-from-Beta.10-to-Beta.14

我所做的工作是卸载angular-cli,然后安装beta.10版本

npm uninstall -g angular-cli
npm install -g angular-cli@1.0.0-beta.10

在那之后,一切正常。

不幸的是,这不是一个解决方案。

最终,我们将有多个使用节点包的项目,我们需要它们能够同时运行,而无需卸载和重新安装全局包。

我们需要能够在构建机器上自动运行构建,而不必通过 RDP 进入构建机器来弄乱安装哪些节点包。

也就是说,如果我有三个使用 angular-cli@1.0.0-beta.10 的项目,我希望这三个项目都可以在任何开发人员计算机上工作,并且构建机器将能够签出三个项目中的任何一个并成功构建它们。

如果我更新一个使用 beta-12,另一个更新为 使用 beta-14,我希望能够将它们提交到版本控制中,并且构建机器能够签出三个中的任何一个并且仍然能够构建它们,无论他们使用哪个版本。

我认为在package.json中跟踪本地依赖项并在node_modules中存储本地副本的整个想法是为了避免对全局安装的软件包的依赖。

人们通常如何处理这个问题?

有没有办法配置 angular-cli,这样它就不依赖于全局安装?

是否有其他软件包可能会遇到类似问题?有没有一种方法适用于他们中的任何一个?

Angular-CLI 可以运行,全局ng命令可以使用每个项目的本地安装版本。可以使用命令访问此本地版本./node_modules/.bin/ng

我建议卸载您拥有的全局 CLI,并花时间修改您的 package.jsonscripts引用本地 CLI 安装而不是全局ng。这是我在 Jenkins 服务器上处理各种 CLI 的方法。

在这一点上,我强烈建议您按照说明从 Beta.10 迁移到 Beta.14 (https://github.com/angular/angular-cli/wiki/Upgrading-from-Beta.10-to-Beta.14),如果您可以接受对 WebPack 的更改。任何使用 CLI Beta.14 或更高版本的项目都可以升级到最新的测试版,只需卸载 CLI,重新安装它,然后运行ng init(Diff [d]您修改的任何文件!

将打字稿组件 html 和 css/scss 文件复制并粘贴到新版本中,甚至不值得弄乱这些东西的核心构建。

请记住,您可能会看到导入显示为灰色,并且在 app.module.ts 中添加所需的导入相同,因为它是当今我们每个项目的核心文件。

最新更新