我可以显示npm运行的扩展命令吗?

时间:2015-04-19 19:45:52

标签: node.js build npm

我正在尝试使用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所说的那样),它本身就变成了一个冗长的问题。

1 个答案:

答案 0 :(得分:2)

问题是npm在npm脚本方面确实没有任何智能;它只需要原始字符串并将它们传递给操作系统shell(大多数操作系统的bash,windows的cmd)。 Npm不知道变量是什么,或者是globbing,还是任何shell特性。

所以你依赖于bash功能和windows cmd功能。幸运的是,两者都有这个选项:

在bash上你可以set -xset -o verbose这样:

{
    "scripts": {
        " foo": "set -x; echo $bar"
    }
}

在Windows中,您可以选择@echo on

{
    "scripts": {
        " foo": "@echo on; echo $bar"
    }
}

然而,我不确定如何将这些结合起来与两种环境兼容。