【发布时间】:2020-05-31 05:23:43
【问题描述】:
我错了
npm install whatever 删除node_modules/- 文件夹的原因不同:我以为它运行preinstall 但没有postinstall,我错了。
我没有运行这两个脚本。
原因似乎是npm install whatever 也删除我的package.json 中未提及的所有包。有趣的是,它没有安装在我的package.json 中提到但在node_modules 中缺少的包。就像迈克尔沃德尔在评论中写的一样。这对我来说毫无意义,但是....
在this comment 之后,我切换到绝对导入并依赖 postinstall(在我自己的 package.json 中)来创建链接
{
"scripts": {
"preinstall": "rm node_modules/-",
"postinstall": "ln -s `pwd`/src node_modules/-",
...
},
}
它工作得很好,除非我真的安装了一些东西。与
npm install
链接被删除然后重新创建。然而,随着
npm install whatever
链接被删除,但没有重新创建。这是一个错误还是故意的,我应该使用其他一些“postinstall”?
请注意,我并不担心丢失我的src 目录。那是一个不同的问题。我的问题是“postinstall”只是有时运行。
更新
人们评论说,只有在不带任何参数的情况下运行 npm install 时才会运行挂钩。我可以忍受,但事实并非如此:
> ls -l node_modules/-
lrwxrwxrwx 1 maaartinus maaartinus 40 May 29 11:53 node_modules/- -> /home/maaartinus/work/octopus/reocto/src
> npm i whatever
foo bar baz blah
> ls -l node_modules/-
ls: cannot access 'node_modules/-': No such file or directory
这意味着preinstall 运行,但postinstall 没有运行。这听起来像一个错误......
> node -v
v12.16.3
> npm -v
6.13.4
更新 2
安装前和安装后脚本在我自己的package.json中(可以从上下文中理解,但我应该说清楚)。
【问题讨论】:
-
我认为您应该检查此链接以使用绝对路径而不删除任何文件..." github.com/facebook/create-react-app/issues/… " ...您提到的链接有一些缺点,您可以在 github 中看到.
-
@PALLAMOLLASAI 我不担心这个设置很危险 - 我知道通过符号链接清理 src 目录的问题(一个愚蠢的老错误,希望同时解决),但我承诺很多时候,所以可能的伤害是有限的。所有智能解决方案的问题在于,react/CRA 都不支持它们。 它们随时可能损坏。
-
难道 postinstall 应该在您安装当前软件包时运行,而不是在您安装其他软件包时运行?
-
安装前和安装后脚本仅在您执行“npm install”时运行 - 安装模块时无法运行它们(请参阅stackoverflow.com/a/46729184/1238190)。并非“预安装”脚本正在运行但“后安装”脚本未运行。安装一个模块会告诉 npm “清理”文件夹。我的建议是创建一个执行所有 3 个步骤的 shell 脚本(例如 npm_install.sh)并使用它而不是调用“npm install module”
-
@MichaelWaddell 你是对的(我花了一段时间才理解它)。随意投票以重复关闭。
标签: reactjs npm post-install