我开发了一个 npm 包(“node_commons”),它包含在我的其他项目中,如下所示:
package.json(其他项目)
"node-commons": "git+ssh://git@stash.custom.domain.net:7999/npm/libs/node_commons.git"
node_commons 包是用 ES6 编写的,但是以后不支持这个版本,所以我使用 postinstall 脚本用 babel 转译它。
package.json (node_commons)
"postinstall": "babel src -d src"
这工作正常。当包作为依赖项包含在我的项目中时,文件将被转译。
我的问题:当我开发 node_commons 包时,我使用
npm install
安装内部依赖项。但后来我不想转换它。 我只想编译,当包作为依赖安装时 (例如在我的另一个项目中)。有没有办法做到这一点?像这样的东西:
package.json (node_commons)
"postinstall-as-dependency": "babel src -d src"
最佳答案
如果我理解正确,您希望您的包运行 postinstall
仅当用户将其作为依赖项( npm install node-common
)安装时才编写脚本?
当您的安装后脚本运行时,它具有 npm_config_save_dev
可用,当用户使用 --save-dev
安装软件包时,这是“真的”旗帜:
"postinstall": "! [ $npm_config_save_dev ] && echo \"Installed as a dependency\" || \"Installed as a dev dependency\""
关于Npm:仅在作为依赖项安装时运行 postinstall 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54212147/