我可以显示 npm 运行的扩展命令吗?
Can I show the expanded commands that npm runs?
我正在尝试使用 npm
作为构建工具,受到 Keith Cirkel 的文章 How to Use npm
as a Build Tool 的启发。有点管用,但是...
$ npm run build
> browserify $npm_package_config_src -d -p [minifyify --map myproj-$npm_package_version.map.json --output dist/myproj-$npm_package_version.map.json] > dist/myproj-$npm_package_version.min.js
我来自 Make world,我真的很希望看到 actual 命令更进一步,这意味着 $npm_package_config_src
和 $npm_package_version
扩展,就像这样:
$ npm run build
> browserify src/myfile.js -d -p [minifyify --map myproj-0.4.2.map.json --output dist/myproj-0.4.2.map.json] > dist/myproj-0.4.2.min.js
有没有办法做到这一点?
推理:当看到实际命令时,它使调试构建更加清晰。现在我觉得自己被蒙在鼓里(尽管正确的事情可能会发生)。此外,由于 $npm_package_config_blahblah
是这样的 "mouthful"(正如 Keith 所说的那样),它本身就变成了一个冗长的问题。
问题是 npm 在 npm 脚本方面并没有真正的智能;它只是获取原始字符串并将它们传递给操作系统 shell(大多数操作系统为 bash,windows 为 cmd)。 Npm 不知道什么是变量、globbing 或任何 shell 特性。
因此您只能依赖 bash 功能和/或 windows cmd 功能。幸运的是两者都有这个选项:
在 bash 上,您可以 set -x
或 set -o verbose
像这样:
{
"scripts": {
" foo": "set -x; echo $bar"
}
}
在 windows 中,您可以选择 @echo on
:
{
"scripts": {
" foo": "@echo on; echo $bar"
}
}
不过,我不确定您如何将它们结合起来以兼容两种环境。
我正在尝试使用 npm
作为构建工具,受到 Keith Cirkel 的文章 How to Use npm
as a Build Tool 的启发。有点管用,但是...
$ npm run build
> browserify $npm_package_config_src -d -p [minifyify --map myproj-$npm_package_version.map.json --output dist/myproj-$npm_package_version.map.json] > dist/myproj-$npm_package_version.min.js
我来自 Make world,我真的很希望看到 actual 命令更进一步,这意味着 $npm_package_config_src
和 $npm_package_version
扩展,就像这样:
$ npm run build
> browserify src/myfile.js -d -p [minifyify --map myproj-0.4.2.map.json --output dist/myproj-0.4.2.map.json] > dist/myproj-0.4.2.min.js
有没有办法做到这一点?
推理:当看到实际命令时,它使调试构建更加清晰。现在我觉得自己被蒙在鼓里(尽管正确的事情可能会发生)。此外,由于 $npm_package_config_blahblah
是这样的 "mouthful"(正如 Keith 所说的那样),它本身就变成了一个冗长的问题。
问题是 npm 在 npm 脚本方面并没有真正的智能;它只是获取原始字符串并将它们传递给操作系统 shell(大多数操作系统为 bash,windows 为 cmd)。 Npm 不知道什么是变量、globbing 或任何 shell 特性。
因此您只能依赖 bash 功能和/或 windows cmd 功能。幸运的是两者都有这个选项:
在 bash 上,您可以 set -x
或 set -o verbose
像这样:
{
"scripts": {
" foo": "set -x; echo $bar"
}
}
在 windows 中,您可以选择 @echo on
:
{
"scripts": {
" foo": "@echo on; echo $bar"
}
}
不过,我不确定您如何将它们结合起来以兼容两种环境。