使用从uglify-js和sass中查找的pipe道输出
我正在探索使用NPM作为构build工具,并遇到了让我难倒的一个问题。 我想要做的就是使用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的东西来获取文件列表。
任何帮助或正确的方向点将不胜感激,欢呼!
您正在以错误的方式使用find
+ xargs
组合。 应该是这样的
find ./views -type f -name '*.js' | xargs -I{} uglifyjs "{}" -o public/js/script.min.js
通过xargs
的-I{}
标志, "{}"
成为从find
命令返回的输出文件名的占位符,
如果你的find
版本支持-print0
选项(它通常是GNU findutils
一部分,在FreeBSD
版本的命令中不会出现这种情况),这是通过embedded一个“ \0
来处理名称中包含空格或特殊字符的文件的更有效方法\0
每个文件末尾有\0
字符。 现在在xargs
有一个选项,用-0
作为分隔符读取stdout
input。
find ./views -type f -name '*.js' -print0 | xargs -0 -I{} uglifyjs "{}" -o public/js/script.min.js