我正在建造一些CI管。
在某些情况下,我想在安装软件包时更改软件包名称。因此,安装后,我将在 node_modules 目录中获得一个具有更改名称的目录。该怎么做?
示例:我的模块的父目录中有程序包B。我在模块X中。我想通过命令npm i ../B
安装B。安装后,我想获得A
目录,而不是B
中的node_modules
目录。
如果我只是运行预安装脚本并更改package.json文件的内容,它将被永久更改。因此,在第二次预安装时,我将获得更改后的package.json文件。同样,它也不影响node_modules目录中的目录名称。
我可以在预安装时“虚拟”更改软件包名称吗?
我的代码:
const { readFileSync, writeFileSync } = require('fs')
const packageJson = JSON.parse(readFileSync('./package.json', 'utf8'));
packageJson.name = 'new-name';
writeFileSync('./package.json', JSON.stringify(packageJson), {
encoding: 'utf8'
});
它确实可以(几乎)工作,但是: -它不会影响节点模块中软件包的实际名称 -它会永久更改文件package.json文件