bin 命令中的破折号不能与 npm run 命令一起运行

问题描述 投票:0回答:1

与:

  • 节点 v22
  • npm v10.6
  • Ubuntu 24.04

bin
中的自定义 npm 包之一中具有以下
package.json
命令:

{
 "bin": {
    "repo_check": "./bin/health-check.js"
  },
  "scripts": {
    "check:health": "$npm_package_bin_repo_check",
  }
}

运行时

npm run check:health
按预期运行

但是当我将 bin 命令从下划线(

_
)更改为破折号(
-
)(如
repo-check
)并重试时,它会立即结束


> @xkeshav/[email protected] check:health
> $npm_package_bin_repo_check

也尝试过

$npm_package_bin_repo-check
但它会抛出错误

sh: 1: -check: not found

那么这是不允许写

-
还是这里出了什么问题?

node.js npm package-json
1个回答
0
投票
环境变量或 npm 脚本占位符中的

连字符

-
无效。 当您使用 $npm_package_bin_repo-check 等环境变量在脚本中引用 npm 包的 bin 命令时,连字符会被解释为特殊字符或标志,从而导致错误。 因此,您可以做的就是像最初一样对 bin 命令和脚本引用使用下划线:

{
  "bin": {
    "repo_check": "./bin/health-check.js"
  },
  "scripts": {
    "check:health": "$npm_package_bin_repo_check"
  }
}

或者,如果您确实需要使用连字符,那么您可以直接引用脚本中的路径,如下所示:

{
  "bin": {
    "repo-check": "./bin/health-check.js"
  },
  "scripts": {
    "check:health": "repo-check"
  }
}

这将在您运行

npm run check:health
时直接运行 repo-check 二进制文件。

© www.soinside.com 2019 - 2024. All rights reserved.