gpt4 book ai didi

node.js - 从 shell 运行 'npm install' 也会运行 'prepublish' 脚本

转载 作者:搜寻专家 更新时间:2023-10-31 23:52:20 24 4
gpt4 key购买 nike

这是一个 SSCCE。给定以下 package.json 文件:

{
"name": "foo",
"version": "1.0.0",
"description": "",
"scripts": {
"prepublish": "echo \"pre-publish script called\""
},
"devDependencies": {
},
"dependencies": {
"lodash": "^4.10.0"
}
}

从 shell 运行:npm install,导致 prepublish 脚本也被执行:

$ npm install

> foo@1.0.0 prepublish /tmp/so
> echo "pre-publish script called"

pre-publish script called
npm WARN foo@1.0.0 No description
npm WARN foo@1.0.0 No repository field.
npm WARN foo@1.0.0 No license field.

如果 prepublish 脚本被重命名为例如prepublis 它不再与 npm install 一起执行。问题是,我需要 prepublish 脚本,因为我通常会在发布到 npm 之前执行静态类型分析和 Mocha 测试。

这是错误还是功能?我该如何解决?当我只想安装 package.json 依赖项时,应该不需要运行我的 Mocha 测试。

我的环境是:

$ npm --version && node --version
3.9.5
v6.2.2

最佳答案

正如我所说,这不是错误(尽管每个人都希望修复此功能),但有一个解决方案。查看https://www.npmjs.com/package/in-publish帮助解决这种情况。

解决方案总结

(来自发布中的包页面)

 npm install --save in-publish

然后在 package.json 中:

  "scripts": {
"prepublish": "in-publish && thing-I-dont-want-on-dev-install || not-in-publish"
}

您还可以使用 not-in-installin-install 而不是 in-publish

  "scripts": {
"prepublish": "not-in-install && thing-I-dont-want-on-dev-install || in-install"
}

关于node.js - 从 shell 运行 'npm install' 也会运行 'prepublish' 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39347536/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com