在现有的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?
...
}
...
}
我可以做些什么来使其像上面的代码一样工作吗?
答案 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,以在该文件中进行搜索和替换。