How to minify multiple Javascript files in a folder with UglifyJS?
您好,我正在使用uglifyJs来最小化我的javascript文件,一次只能处理一个文件,我希望将最小化一个名为JS的文件夹中的所有javascript文件压缩为一个名为JSM的文件夹,要清除,我的JS文件夹中有两个文件,分别称为test1.js和test2.js,我想对该文件夹运行uglify并在JSM文件夹中生成test1.min.js和test2.min.js ,有没有办法做到这一点?像这样的命令:
1 | uglifyjs -c -m JS/*.js JSM/*.min.js |
或任何可以帮助我的想法。
谢谢。
我知道这似乎是一个巨大的进步,但我真的建议您使用grunt。
一旦掌握了它,这真的很简单。
这里是速成班:
安装Grunt CLI(只需在控制台/终端中输入此内容):
1 | npm install -g grunt-cli |
在项目的根目录中创建一个简单的
1 2 3 4 5 6 7 8 9 | { "name":"my-project-name", "version":"1.0.0", "devDependencies": { "grunt":"~0.4.2", "grunt-contrib-uglify":"~0.2.4", "grunt-contrib-watch" :"~0.5.3" } } |
一旦有了,只需在控制台中输入:
这将安装必要的grunt插件/依赖项(来自上面的软件包文件)。
现在在项目的根目录中创建一个简单的
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | module.exports = function (grunt) { grunt.initConfig({ [cc] // define source files and their destinations uglify: { files: { src: 'js/*.js', // source files mask dest: 'jsm/', // destination folder expand: true, // allow dynamic building flatten: true, // remove all unnecessary nesting ext: '.min.js' // replace .js to .min.js } }, watch: { js: { files: 'js/*.js', tasks: [ 'uglify' ] }, } }); // load plugins grunt.loadNpmTasks('grunt-contrib-watch'); grunt.loadNpmTasks('grunt-contrib-uglify'); // register at least this one task grunt.registerTask('default', [ 'uglify' ]); |
};
pre>
完成后,您只需要构建它即可。在控制台中输入:
1 | grunt |
或者-更好-如果键入以下命令,则-grunt将监视源文件中的更改,如果更改其中任何一个,它将自动构建它们:
1 | grunt watch --force |
然后您可以添加更多插件,例如:css缩小,css预处理程序(less,sass,手写笔),jshint等。
如果您使用的是Linux / Mac,并且可以访问bash,则可以在多个JS文件上使用uglifyjs,如下所示:
1 | rm *.min.js; for f in *.js; do short=${f%.js}; uglifyjs $f > $short.min.js; done |
仅npm方式:
运行:
1 | npm install uglifyjs-folder --save-dev |
,然后在您的
1 | "uglifyjs":"uglifyjs-folder js -eo jsm" |
然后运行:
1 | npm run uglifyjs |
请注意,如果您需要生成与源文件(
运行:
1 | npm install del-cli uglifyjs-folder --save-dev |
,然后在您的
1 | "uglifyjs":"del js/*.min.js; uglifyjs-folder js -eo js" |
然后运行:
1 | npm run uglifyjs |
进一步回答上述问题后,我现在在.bashrc文件中进行了设置:
1 | alias minify='rm *.min.js; for f in *.js; do short=${f%.js}; uglifyjs $f > $short.min.js; done' |
您可以在gruntfile.js中使用此配置:
1 2 3 4 5 6 7 8 9 10 11 | uglify: { all: { files: [{ expand: true, cwd: '<path to js folder>', src: ['**/*.js', '!*.min.js'], dest: '<path to js folder>', ext: '.js' }] } } |
在任何路径下递归执行
terser_path.sh
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | #!/bin/bash #### # Tiny shell script for terser any JavaScript project # usage: # ./terser_path <path_to_your_project> #### path="$1" find $path -name '*.js' -type f | while read f do folderpath=$(dirname"$f") filename=$(basename"$f") extension="${filename##*.}" filename="${filename%.*}" nf=$folderpath/$filename.min.$extension # ----- METHOD 1 : Replace the old file # terser"$f" --output"$f" --compress --mangle # ----- METHOD 2 : Create .min.js file terser"$f" --output"$nf" --compress --mangle done |
您可以使用此npm模块软件包
1 2 | npm i uglify-js-minify-css-allfiles npm i uglify-js clean-css |
1 2 3 4 5 | // making index.js file const minifyAll = require('uglify-js-minify-css-allfiles'); // Folder Name (you will change all files in Folders) minifyAll('../test/'); |
npm打包站点
制作一个蝙蝠文件,每行的开头都开始
1 2 3 4 | start uglifyjs app\\main.js -mt sort -c -e -o app\\main.ug.js start uglifyjs app\\lib.js -mt sort -c -e -r myfunctionname -o app\\lib.ug.js start uglifyjs app\\controllers\\bbbCtrl.js -mt sort -c -o app\\controllers\\bbbCtrl.ug.js start uglifyjs app\\controllers\\aaaCtrl.js -mt sort -c -e -o app\\controllers\\aaaCtrl.ug.js |