如何基于 npm 在安装时为依赖重命名?

如何基于 npm 在安装时为依赖重命名?如何使用 npm 安装为依赖取别名?如何安装 scope 包且饶过 npm 发布?如何以别名或不同名称安装 npm 包?如何全局安装两个不同版本的 npm 包?倘若您有类似的诉求,可以通过 npm 或 yarn 来做到这一点。

npm i <alias_name>@npm:<original_package_name>
# OR
yarn add npm i <alias_name>@npm:<original_package_name>

实际示例如下:

npm i @types/quickapp@npm:quickapp-interface --save-dev
# OR
yarn add @types/quickapp@npm:quickapp-interface --save-dev

需要补充说明的是:用这种方式,npm 版本需要大于 6.9.0(对应 node.js12.0 ),否则会报如下错误:

npm ERR! Invalid dependency type requested: alias

倘若说有报这个错误,只需升级下 npm 版本即可:

npm i -g npm@latest

对于这个功能,还是非常有用的。尤其是对于需要安装 scope 包,可以借此功能,绕过 npm 发布(毕竟属于他人控制的 scope,我们是无权发布的)。最近因为需要,想在借助 DefinitelyTyped 发布 @types/quickap 包,从而实现快应用语法提示功能,在对方建议下,改用了这种方案,比较合理且快速的解决这个问题。当然,还有另一种方案是,基于 Git (Github / Gitee)来下载依赖;只不过这种方法不太稳定(由于众所周知或各个公司内部网络限制等原因)。

// package.json
{
	  "devDependencies": {
	      "@types/quickapp": "git+https://github.com/vivoquickapp/quickapp-types.git",
          // ......
	   },
}

除了绕过 scope,在本地安装来多个不同版本的 npm 包,在某些场景下,也显得十分有用,如 GLOBALLY INSTALL TWO DIFFERENT VERSIONS OF NODE PACKAGE 这篇文章所提及的诉求。相信您了解了 npm(yarn) 的这个功能,对您的工作大有裨益。

猜您可能感兴趣的文章