node.js - 使用 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?
...
}
...
}
我可以做些什么让它像上面的代码一样工作吗?
解决方案
您可以尝试更改(位于)main
的 package.json 中的条目public-package
node_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 添加一个自定义脚本,该脚本在该文件中执行搜索和替换。
推荐阅读
- python - if条件后的随机输出结果 - python
- css - 为什么 Svelte 不将标签限定在一个类下,而是使用单独的 tag.class 来设置组件的样式?
- azure - Azure Front Door 每秒轮询后端池状态数次
- api - 只有在 drupal 7 中手动清除缓存后才能看到正确的投票结果计数
- asp.net - 我可以在 Swagger UI 中手动更改方法图标(锁定/解锁)吗?
- java - Android - 如果语句被忽略和绕过
- python - DataClass 是否适合替换字典?
- java - 在 Flutter 中配置 local_auth 插件
- arrays - 如何从Java中的放心JSON响应中检索值“不允许空值”
- javascript - 我想检查firefox窗口是否处于活动状态或空闲状态