Azure管道-从“npm install”命令中排除角度构建中的“已安装”包


问题针对 – 用于角度项目的 Azure 构建管道。
每次使用新的拉取请求构建 Angular 项目时,我都必须运行 npm install 作业。

设想 – 我根据项目的要求定制了 2 个包。 我不想每次有 npm install 命令时都覆盖这些包。 一旦被手动覆盖,就不应再碰它。

有没有办法在安装后忽略 package.json 中的特定包?
换句话说,是否可以仅在尚未安装 npm 包的情况下安装它?
寻求专家的指导:)

我尝试过的:

1.从package.json文件中排除这些包

此解决方案的问题 – 如果我必须在新系统上部署我的应用程序,这些软件包将永远不会被安装。

2. 我将这些包添加到另一个文件夹中,并尝试从那里引用这些包。 它没有按预期工作。

解决方案2

您可以尝试以下方法;

使用 npm-shrinkwrap.json

1. 自定义和安装软件包:根据需要最初安装和自定义您的软件包。
2. 生成 npm-shrinkwrap.json:在项目目录中运行 npm Shrinkwrap。 此命令创建一个 npm-shrinkwrap.json 文件,该文件锁定所有已安装包及其依赖项的版本。
3. 编辑 npm-shrinkwrap.json:在 npm-shrinkwrap.json 中,您可以手动编辑自定义包的条目以指向您的特定版本或本地副本。 这样,每当 npm install 运行时,它都会遵循 npm-shrinkwrap.json 中指定的版本和源,忽略通常从 npm 注册表中获取的任何更新或更改。

如果这不起作用,请尝试使用本地路径:

利用 package-lock.json 和本地路径

1. 在本地安装自定义包:将自定义包放置在项目内的已知目录中或项目可访问的位置。
2. 修改package.json:通过指定路径而不是版本号来引用package.json中的这些本地包。

JSON
"dependencies": {
  "custom-package": "file:./path/to/custom-package",
}

3.提交 package-lock.json:运行 npm install 后,确保您的 package-lock.json 已更新并将此文件提交到存储库。 package-lock.json 确保在将来的安装中复制 node_modules 目录的确切结构,包括本地包的使用。

我建议使用第一种方法,如果这不起作用,您可以去覆盖包。

使用 .npmrc 覆盖包位置

配置 .npmrc:您可以使用 .npmrc 文件覆盖特定包的源位置。 这有点更高级,通常用于在不同注册表之间切换,但您可以为包指定本地路径或自定义 URL。

但是,此方法要求您的包是结构化的,并且可以以类似于 npm 注册表上托管的方式安装,这可能需要对自定义包进行额外的设置。

コメント

タイトルとURLをコピーしました