使用UglifyJS对多个文件进行压缩
问题的原因是使用UglifyJS2对多个文件进行压缩时,出现了一些混淆。然而,解决方法很简单,只需按照正确的顺序输入命令即可。下面是解决方法:
使用UglifyJS2对多个文件进行压缩,只需在命令行中输入以下命令:
uglifyjs file1.js file2.js -o foo.min.js
如果还需要生成源映射文件,可以使用以下命令:
uglifyjs file1.js file2.js -o foo.min.js --source-map foo.min.js.map --source-map-root http://foo.com/src
另外,还可以使用*通配符将一个目录中的所有JS文件合并成一个文件:
uglifyjs -o test.js /someTestDir/*
需要注意的是,官方文档中建议将选项放在前面,文件名放在最后;但是上述示例中正好相反。根据github.com/mishoo/UglifyJS的解释,“文件名应该是最后一个参数,用于指定要读取JavaScript代码的文件”。可能是因为这个原因,导致了混淆。
问题的出现原因是UglifyJS在当前的形式下无法同时压缩多个文件,而是将它们全部合并为同一个输出文件。这与实际需求不符。
如果你有一打的独立模块文件,不能同时压缩它们,这是不可取的,因为这样会浪费启动Node.js的时间。
YUI Compressor允许这样做,通过避免为每个独立文件启动一个Java虚拟机,节省了很多时间。最终你会得到file1-min.js、file2-min.js等单独的文件,而不是一个合并的文件。
使用Uglify,如果不想合并输出,你将不得不为每个文件生成一个进程。
解决方法是使用一个循环或者批处理脚本来遍历每个文件,并为每个文件分别生成一个进程。
以下是一个示例的批处理脚本,可以通过命令行运行:
for %%f in (*.js) do ( uglifyjs "%%f" -o "%%~nf-min.js" )
该脚本将遍历当前目录下的所有.js文件,并使用UglifyJS将每个文件压缩为一个独立的.min.js文件。
这样,你就可以同时压缩多个文件,而不需要将它们合并为一个文件。
Minify multiple files with UglifyJS的问题是如何在Windows上同时压缩多个文件,以及如何解决这个问题。
在给出的内容中,有两种方法可以解决这个问题。第一种方法是使用Linux的cat命令,将所有要压缩的文件连接起来,然后使用UglifyJS压缩成一个文件。第二种方法是使用Windows的type命令将所有要压缩的文件连接起来,然后使用UglifyJS压缩成一个文件。另外,还提到了一种在Windows上使用Ubuntu bash的方法,但没有给出具体步骤。
根据内容,可以得出问题的原因是在Windows上无法直接使用cat命令来连接多个文件,并且在Windows上使用type命令连接文件时需要特殊的语法。解决方法是使用给出的Windows语法来连接文件,或者在Windows上使用Ubuntu bash。
需要注意的是,这种方法的缺点是无法生成指向原始源代码的源映射。但是,提到了使用UglifyJS2来解决这个问题的方法。