reactjs - npm postinstall 仅在未安装任何内容时运行
问题描述
我错了
npm install whatever
删除文件夹的原因node_modules/-
不同:我以为它运行preinstall
但没有postinstall
,我错了。
我没有运行这两个脚本。
原因似乎是npm install whatever
也删除了我的package.json
. 有趣的是,它不会安装我提到package.json
但在node_modules
. 就像迈克尔沃德尔在评论中写的一样。这对我来说毫无意义,但是......
在此评论之后,我切换到绝对导入并依靠 postinstall(在我自己的 package.json 中)来创建链接
{
"scripts": {
"preinstall": "rm node_modules/-",
"postinstall": "ln -s `pwd`/src node_modules/-",
...
},
}
它工作得很好,除非我真的安装了一些东西。和
npm install
该链接被删除,然后重新创建。然而,随着
npm install whatever
链接被删除,但没有重新创建。这是一个错误还是故意的,我应该使用其他一些“安装后”?
请注意,我不担心丢失我的src
目录。那是一个不同的问题。我的问题是“安装后”只运行有时。
更新
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
(可以从上下文中理解,但我应该说清楚)。
解决方案
有时节点由于某种原因currpted,因此它删除了node_module文件夹。你可以通过纱线安装任何东西
yarn add whatever
preinstall:在安装包之前运行 install
postinstall:安装包后运行。
绝对路径:
通过安装babel-plugin-module-resolver
yarn add -D babel-plugin-module-resolver
yarn add -D customize-cra
babel.config.js
然后像这样在文件中添加相对路径
const { override, addBabelPlugins } = require('customize-cra');
module.exports = override(
...addBabelPlugins([
'module-resolver',
{
alias : {
'@components' : './src/components',
}
}
])
);
那么你可以使用这样的绝对路径
import TextLabel from '@components/textLabel/index.js'
推荐阅读
- c# - C#:如何在没有“复制/粘贴”代码的情况下重写它
- oracle - 将 blob 列中的 pdf 存储到数据库表中,以顶点形式/区域的 pdf 预览?
- python-3.x - 如何知道呼出电话的状态?
- google-apps-script - 谷歌脚本:ui.prompt,按回车而不是点击按钮提交
- asp.net-mvc - 如何使用 C# 通过异步方法使用 Task.WaitAll
- java - ANTLR 语法行 1:6 不匹配的输入 '
'期待'。 - c++ - 在这种情况下,(N)RVO 会与我的功能一起应用吗?
- tensorflow - Google Cloud 平台上的对象检测批量预测失败
- jquery - Multi-Select DropDown:仅禁用所选选项(jQuery)
- ms-access - 使用报告字段在当前记录处打开表单