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

B T*_*B T 13 node.js npm node-modules package.json

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

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

npm install https://github.com/me/mymodule/tarball/someTag -name mymoduleTemp
Run Code Online (Sandbox Code Playgroud)

有没有办法做到这一点?一个很好的:

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

Efr*_*tan 21

在较新版本的 npm 中,现在可以将模块名称别名为

npm i <alias_name>@npm:<original_package_name>
Run Code Online (Sandbox Code Playgroud)

  • @roydukkey 你需要 npm 6+ 来实现这个技巧。这个问题发布于 2013 年,而 npm6 于 2018 年 4 月正式推出。我发布了我的答案来帮助其他遇到与我相同问题的人 (2认同)
  • 如果您已经安装了该软件包,只需将其更改为:`"&lt;alias_name&gt;": "npm:&lt;original_package_name&gt;@&lt;version&gt;",` (2认同)

Pav*_*kou 19

因为npm@6.9.0您可以在自定义模块名称下安装软件包。npm@6.9.0 引入了对软件包别名的支持

要在自定义模块名称下安装tarball,请使用custom-name@tarball-url参数,例如,将特定的expresstarball 安装为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


her*_*w78 8

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

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

  • 所以基本上这个概念是强有力的并且留下来了?多奇怪啊.. (6认同)
  • @BT是的,我认为Isaac Schleuter在做出Guido van Rossumesqe决定时并不是非常具有前瞻性. (4认同)
  • 我觉得很遗憾他​​们从一开始就没有提供。通常,我会分叉一个软件包来修复错误,然后我必须构建它并在@ myusername / packagename下发布它。我希望可以很容易地将@ myusername / packagename安装为packagename,这样我就可以得到我的错误修正,而不必更改任何require或import语句。 (2认同)
  • @Andy您已经可以通过指定[URL作为依赖关系](https://docs.npmjs.com/files/package.json#urls-as-dependencies)来实现. (2认同)
  • @Andy您的案子现在已包含在`npm @ 6.9.0`中,请尝试`npm i somepackage @ npm:@ myusername / somepackage` (2认同)