首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在"npm安装<package>“单独执行后运行后安装脚本

如何在"npm安装<package>“单独执行后运行后安装脚本
EN

Stack Overflow用户
提问于 2017-06-05 05:49:50
回答 2查看 11.3K关注 0票数 17

我正在维护以下目录结构:

代码语言:javascript
复制
/home/user/Desktop/
                 |-- app/
                 |      |-- package.json
                 |      `-- server.js
                 |-- node/
                 |      |-- bin/
                 |      |      |-- node
                 |      |      `-- npm
                 |      |-- include/
                 |      |-- lib/
                 |      `-- share/
                 |
                 `-- npm.sh

我希望所有本地安装的节点模块都驻留在node.目录中。也就是说,如果我在目录npm install中运行app,最初它将在当前目录(app)中安装模块,然后将node_modules文件夹移动到名为node的外部目录。为此,我编写了一个脚本npm.sh,并将mv (move)命令放在package.jsonpostinstall脚本中。

这些是npm.shpackage.json文件。

npm.sh含量

代码语言:javascript
复制
#/bin/bash

export PATH=/home/user/Desktop/node/bin:$PATH
export NODE_PATH=/home/user/Desktop/node/node_modules
export NODE_MODULE_ROOT=/home/user/Desktop/node
/bin/bash

app/package.json含量

代码语言:javascript
复制
{
  "name": "app",
  "version": "1.0.0",
  "scripts": {
    "postinstall": "mv node_modules $NODE_MODULE_ROOT",
    "start": "node server.js"
  },
  "dependencies": {
    "jwt-simple": "^0.5.1"
  }
}

但问题是:当我做./npm.sh && cd app && npm install时,一切都按预期进行。但是,当我执行npm install jwt-simple时,postinstall脚本不会被执行。

有什么方法可以让它对单个npm install <package>有效吗?或者有什么更好的方法来实现这一点?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-07-03 13:15:50

您可以在安装包后使用npm钩子脚本来做一些事情。

创建node_modules/.hooks/postinstall可执行文件,它也将在npm install <package>之后运行。

注意:我注意到在NPM5.1.0版本到6.0.1之间NPM钩子脚本存在问题。因此,如果你有问题的钩,检查你的npm版本,并在必要时进行升级。

票数 9
EN

Stack Overflow用户

发布于 2019-08-15 15:09:08

对于其他人来说,当安装一个特定的包时,npm不会在package.json中运行预/后安装。你可以在这里查一下,https://npm.community/t/preinstall-npm-hook-doesnt-execute-when-installing-a-specific-package/2505。不知道是否有办法绕过,但我也一直在找。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44362462

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档