在uglify-js和sass

时间:2016-12-08 17:02:01

标签: node.js bash npm

我正在探索NPM作为构建工具的使用,并遇到了让我难过的问题。我想做的是使用find来获取文件列表,然后将它们输入到像uglify-js或sass这样的命令中:

find ./views -type f -name '*.js' | uglifyjs xargs -o public/js/script.min.js

在uglify-js和sass中我得到了这个错误的一个版本:

  

错误:无法读取文件:xargs

我不完全确定我尝试做的事情是否可行,或者我是否应该采取不同的方式。我知道我可以实现我喜欢的目标:

uglifyjs views/*.js views/**/*.js -o public/js/script.min.js

如果您的.js文件分散在多个目录中,我可以看到在大型项目中变得有点笨拙,因此我有兴趣使用像find这样的东西来获取文件列表。

任何帮助或正确方向的观点都会非常感激,欢呼!

1 个答案:

答案 0 :(得分:1)

您正在以错误的方式使用find + xargs组合。应该是

find ./views -type f -name '*.js' | xargs -I{} uglifyjs "{}" -o public/js/script.min.js

-I{}中的xargs标志,"{}"成为find命令返回的输出文件名的占位符,

如果您的find版本支持-print0选项(它通常是GNU findutils的一部分,并且不会出现在FreeBSD版本的命令中。),这是更多通过在每个文件的末尾嵌入\0字符来有效处理名称中包含空格或特殊字符的文件的方法。现在,xargs中的-0选项会从stdout读取输入,并将该字符作为分隔符。

find ./views -type f -name '*.js' -print0 | xargs -0 -I{} uglifyjs "{}" -o public/js/script.min.js