首页 > 解决方案 > 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(可以从上下文中理解,但我应该说清楚)。

标签: reactjsnpmpost-install

解决方案


有时节点由于某种原因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'

推荐阅读