使用 npm 安装时重命名包

Bil*_*ill 6 node.js npm

在现有的 Nodejs 项目上工作时,其中一个包不在我的控制范围内,例如public-package. 当我尝试发布新版本时,我必须使用新的包名称进行部署,例如my-package.

例如,

{
  ...
    "dependencies": {
    "public-package": "1.0.123",
    ...
  }
  ...
}
Run Code Online (Sandbox Code Playgroud)

在源代码中,有很多行,例如require('public-package')

那么我如何使用我的包,在npm install不更改代码的情况下直接将其重命名为require('public-package')to require('my-package')

例如

{
  ...
    "dependencies": {
    "public-package": "my-package@1.0.10",   # <= how to make this work?
    ...
  }
  ...
}
Run Code Online (Sandbox Code Playgroud)

我可以做些什么来让它像上面的代码一样工作吗?

mih*_*hai -1

您可以尝试更改mainpackage.json 中的条目public-package(位于node_modules/public-package/package.json

有关该条目如何工作的详细信息,请参阅节点文档中的文件夹作为模块main。该技术用于指向require模块的子文件夹,但在这种情况下,您可以对其进行调整以满足您的需求。

{ 
  "name" : "public-package",
  "main" : "./public-package.js"
}
Run Code Online (Sandbox Code Playgroud)

将其更改为

{ 
  "name" : "public-package",
  "main" : "/path/to/my-package.js"
}
Run Code Online (Sandbox Code Playgroud)

现在,每次执行 a 时require('public-package'),它都会加载my-package,而无需更改源代码。

要自动更改 中的条目node_modules/public-package/package.json,您可以将自定义脚本添加到 npm 中,以在该文件中执行搜索和替换。