首页 > 解决方案 > 使用 npm 安装时重命名包

问题描述

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

例如,

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

在源代码中,有很多行,例如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?
    ...
  }
  ...
}

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

标签: node.jsnpm

解决方案


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

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

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

将其更改为

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

现在每次你做 a时,它都会在不需要更改源代码的情况下require('public-package')加载。my-package

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


推荐阅读