使用从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作为分隔符读取stdoutinput。

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