覆盖 package.json 中的 scripts - NPM

5
有没有一种方式可以覆盖package.json中的脚本?我不能更改package.json,因为这会对所有人造成影响。例如,在我们的包中,我们有:
"script": {
    "dev": "yarn dev:build" 
}

我想为这个步骤增加额外的内存,因为它经常在我的电脑上崩溃。例如:
"scripts":{
    "dev": "\"node --max-old-space-size=9000 yarn dev:build\""
}

创建另一个脚本,例如 dev:yasin 并为其指定参数。 - 31piy
1
我不能更改原始的package.json文件,因为这将会影响到所有人。 - Yasin Yaqoobi
没关系,它会更改package.json文件,因为只有你和其他可能需要额外内存的人才会运行第二个脚本(请参见@ChetanJadhavCD的答案)。 - i--
另一个选项是将您的yarn命令修复为其他内容。例如,您可以创建带有bash shebang的~/bin/yarnnode --max-old-space-size=9000 /path/to/yarn "$*"。这样,从PATH执行yarn的所有命令都将获得改进的内存设置。 - Mikko Rantalainen
2个回答

1
您无法“覆盖”package.json,因为文件名在NPM中是硬编码的。您可以创建另一个脚本条目,例如:
"scripts":{
    "dev": "yarn dev:build" 
    "devlocal": "\"node --max-old-space-size=9000 yarn dev:build\""
}

在使用任何源代码管理工具时,请将 package.json 文件排除在提交之外,修改后的文件仅保留在本地计算机上。

话虽如此,你所要求的(使用另一个文件来完成 package.json 的工作)是不可能的。


1

从技术上讲,这不是覆盖脚本,但您可以通过在终端中调用npm exec来执行一个本应添加到package.json中的脚本:

npm exec --max-old-space-size=9000 yarn dev:build

为什么要安装 npx,它 (a) 已经默认与 npm 一起安装了,(b) 现在建议使用 npm exec 而不是 npx?https://dev59.com/9Wkw5IYBdhLWcg3wu9Fh#66604542 - ssc-hrep3
1
ssc-hrep3,我更新了我的答案。 - Faust

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接