gpt4 book ai didi

node.js - 如何从全局包运行 npm 脚本?

转载 作者:太空宇宙 更新时间:2023-11-03 21:54:10 25 4
gpt4 key购买 nike

比如说,我正在制作一个 npm 包。

示例包.json:

{
"bin": { "cli": "cli.js" },
"scripts": {
"sample": "node sample.js"
}
}

示例 cli.js:

const shell = require('shelljs')
shell.exec('npm run sample')

然后,我运行 npm link

现在,如果我从项目存储库之外的任何地方运行 cli,它都不会运行。相反,它会抛出错误。

我通过将 cli.js 更改为以下方式找到了解决方法:

const shell = require('shelljs')
, package_path = require('./path.json')
// I manually created this path.json containing the absolute path of the package

shell.exec('npm run --prefix ${package_path} sample')

这种作品。但主要限制是:

  • 项目的所有贡献者必须在克隆存储库后手动设置此路径。

  • 如果该软件包像 npm i -g package 一样全局安装,那么这种路径更改会让用户感到烦恼。

我要问的是:

  • 如何自动设置路径?

  • 任何其他更好实现相同行为的方法,即从全局 cli 脚本调用 npm 脚本

最佳答案

我找到了解决我的问题的优雅解决方案。

cli.js 文件编辑为:

const shell = require('shelljs')
shell.exec(`npm run --prefix ${__dirname} sample`)

Node 提供了一些非常有用的外观全局变量 ( read here )。

在这里,__dirname是完美的解决方案。它提供了执行脚本的路径。

希望这对其他开发者有所帮助。

关于node.js - 如何从全局包运行 npm 脚本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45267775/

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