我正在尝试使用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,我非常乐意看到实际命令更进一步,这意味着$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
是如此“满口”(正如Keith所说的那样),它本身就变成了一个冗长的问题。
答案 0 :(得分:2)
问题是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"
}
}
然而,我不确定如何将这些结合起来与两种环境兼容。