使用npm安装时重命名软件包

时间:2018-08-14 04:58:19

标签: node.js npm

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

例如

{
  ...
    "dependencies": {
    "public-package": "1.0.123",
    ...
  }
  ...
}

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

那么我该如何使用我的包,在npm install时直接重命名它,而无需将代码从require('public-package')更改为require('my-package')

例如

{
  ...
    "dependencies": {
    "public-package": "my-package@1.0.10",   # <= how to make this work?
    ...
  }
  ...
}

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

1 个答案:

答案 0 :(得分:0)

您可以尝试更改main(位于public-package中)的package.json中的node_modules/public-package/package.json

有关节点main的工作方式的详细信息,请参见节点文档中的Folders as Modules。该技术用于将require指向模块的子文件夹,但是在这种情况下,您可以对其进行调整以适合您的需求。

{ 
  "name" : "public-package",
  "main" : "./public-package.js"
}

将其更改为

{ 
  "name" : "public-package",
  "main" : "/path/to/my-package.js"
}

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

要在node_modules/public-package/package.json中自动更改条目,可以在npm中添加自定义script,以在该文件中进行搜索和替换。

相关问题