我正在探索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这样的东西来获取文件列表。
任何帮助或正确方向的观点都会非常感激,欢呼!
答案 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