如何使用具有不同/自定义模块名称的npm安装包

时间:2013-06-15 19:16:13

标签: node.js npm

我想从一个名为" mymodule"的github tarball安装一个特定的版本。并将其命名为" mymoduleTemp",然后加载一个可能采用真实名称的可能不同的版本" mymodule"。

那么,我该如何做第一件事呢?我正在寻找类似的东西:

npm install https://github.com/me/mymodule/tarball/someTag -name mymoduleTemp

有没有办法做到这一点?一个不错的选择:

  • 如果mymodule已经存在,那么在安装mymoduleTemp时它不会被破坏(理想情况下,该过程不能作为mymodule安装,然后重命名该文件夹)

5 个答案:

答案 0 :(得分:8)

npm-github存储库中存在一个问题,要求该功能。

请在此处阅读:https://github.com/npm/npm/issues/2943

答案 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)

你可以这样做:

  1. 获取tarball并将其解压缩
  2. name中的package.json更改为@me/mymoduleTemp(您可以通过使用vim mymoduleTemp.tgz编辑tarball来跳过步骤1和3)
  3. 将其压缩为mymoduleTemp.tgz
  4. 运行npm publish mymoduleTemp.tgz--access public,除非您希望限制它)
  5. 在您的主项目中,运行npm install @me/mymoduleTemp
  6. 我建议将其发布为scoped package,因为如果您将其发布为无范围mymoduleTemp,则其他任何人都无法使用该名称。

    如果您认为即使发布范围的软件包也会污染npm注册表,那么您可以将新的tarball放在您自己的私有服务器上(或者在GitHub中,或者在任何地方)并通过URL安装它。

答案 4 :(得分:1)

特别是对于浏览器,您可以在package.json中添加别名

https://github.com/defunctzombie/package-browser-field-spec

例如:

{
  ....
  "browser": {
    "someTag": "mymoduleTemp"
  }
}

这也适用于使用metro捆绑器的“本机”。 我从未测试过webpack捆绑包。