2015-04-19 44 views
1

我试图使用npm作为构建工具,由Keith Cirkel的文章How to Use npm as a Build Tool激励。这样的工作,但...我可以显示npm运行的扩展命令吗?

$ 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 

我来自制作的世界,我真的会珍惜看到实际命令走得更远,这意味着$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是如此“满口”(正如基思所说的那样),它本身就成了一个冗长的问题。

+0

超出'--loglevel verbose'? –

+0

我认为这回答了另一个问题。我编辑问题以显示我希望看到的内容。 – akauppi

回答

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" 
    } 
} 

我不是但是,确定如何将这些组合起来以便与这两种环境兼容。

+0

感谢您的好评。我最终在Makefile中创建了我的构建逻辑,并从那里使用npm模块。这只是其中一个原因。但避免Grunt/Gulp。这对我的需求来说是最合适的。 – akauppi

相关问题