【问题标题】:NPM: How to add a "post-install" hook that's not run for package consumers?NPM:如何添加不为包消费者运行的“安装后”挂钩?
【发布时间】:2020-10-04 01:59:06
【问题描述】:
我正在编写一个 NPM 模块。
在本地开发模块时,我想在每个npm install 之后自动执行一些任务。
但是,我不希望在我的库的使用者执行 npm install 时执行这些步骤,并且我不希望在每次执行之后执行这些步骤npm pack 和 npm publish 是我在开发过程中创建的(所以这排除了使用 prepublish 和 prepare 脚本)。
实现这一目标的最简单方法是什么?
(我考虑过:(a)发布一个单独的 package.json 不带 install 脚本,(b)在项目的根目录中创建一个用户调用的 ./install.sh 而不是 npm install...但这有点糟糕。)
【问题讨论】:
标签:
javascript
node.js
npm
package.json
【解决方案1】:
这里的install:local 脚本将在npm install 仅在本地运行之后运行(即当消费者安装您的软件包时不运行)。
package.json:
{
...,
"scripts": {
"prepare": "case \"$npm_config_argv\" in *\"\\\"install\\\"\"*|*\"\\\"ci\\\"\"*) npm run install:local ;; esac",
"install:local": "echo 'npm install' was run directly in the project, and not by a library consumer!",
}
}