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

前端开发 Nov 12, 2021

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

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

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) 的这个功能,对您的工作大有裨益。

猜您可能感兴趣的文章

Tags

Great! You've successfully subscribed.
Great! Next, complete checkout for full access.
Welcome back! You've successfully signed in.
Success! Your account is fully activated, you now have access to all content.