我想从一个名为" mymodule"的github tarball安装一个特定的版本。并将其命名为" mymoduleTemp",然后加载一个可能采用真实名称的可能不同的版本" mymodule"。
那么,我该如何做第一件事呢?我正在寻找类似的东西:
npm install https://github.com/me/mymodule/tarball/someTag -name mymoduleTemp
有没有办法做到这一点?一个不错的选择:
答案 0 :(得分:8)
npm-github存储库中存在一个问题,要求该功能。
答案 1 :(得分:8)
自npm@6.9.0
起,您可以使用自定义模块名称安装软件包。 npm@6.9.0
introduces support(包别名)。
要使用自定义模块名称安装tarball,请使用custom-name@tarball-url
参数,例如将特定的express
压缩包安装为my-express
模块:
npm i my-express@https://github.com/expressjs/express/archive/4.16.3.tar.gz
此功能还允许别名发布到npm注册表的程序包:
npm i express@npm:@my-scope/express
答案 2 :(得分:6)
在较新版本的npm中,现在可以使用以下别名为模块名称
npm i <alias_name>@npm:<original_package_name>
答案 3 :(得分:1)
你可以这样做:
name
中的package.json
更改为@me/mymoduleTemp
(您可以通过使用vim mymoduleTemp.tgz
编辑tarball来跳过步骤1和3)mymoduleTemp.tgz
npm publish mymoduleTemp.tgz
(--access public
,除非您希望限制它)npm install @me/mymoduleTemp
我建议将其发布为scoped package,因为如果您将其发布为无范围mymoduleTemp
,则其他任何人都无法使用该名称。
如果您认为即使发布范围的软件包也会污染npm注册表,那么您可以将新的tarball放在您自己的私有服务器上(或者在GitHub中,或者在任何地方)并通过URL安装它。
答案 4 :(得分:1)
特别是对于浏览器,您可以在package.json
中添加别名
https://github.com/defunctzombie/package-browser-field-spec
例如:
{
....
"browser": {
"someTag": "mymoduleTemp"
}
}
这也适用于使用metro捆绑器的“本机”。 我从未测试过webpack捆绑包。