47

您好,我正在使用 uglifyJs 来缩小我的 javascript 文件,它一次可以处理一个文件,我正在寻找的是将名为 JS 的文件夹中存在的所有 javascript 文件缩小到名为 JSM 的文件夹中,要清楚我的 JS 文件夹中有 2 个文件,名为 test1.js 和 test2.js,我想对该文件夹运行 uglify 并在 JSM 文件夹中生成 test1.min.js 和 test2.min.js,所以有办法吗这?像这样的命令:

uglifyjs -c -m JS/*.js JSM/*.min.js

或者任何可以帮助我的想法。

谢谢。

4

8 回答 8

91

我知道这似乎是一个巨大的进步,但我真的建议使用grunt。一旦你掌握了它,这真的很简单。

这是一个速成课程:

  1. 安装NodeJS
  2. 安装 Grunt CLI(只需在控制台/终端中输入):

    npm install -g grunt-cli
    
  3. package.json在项目的根目录中创建一个简单的文件:

    {
      “名称”:“我的项目名称”,
      “版本”:“1.0.0”,
      “开发依赖”:{
        “咕噜”:“〜0.4.2”,
        "grunt-contrib-uglify": "~0.2.4",
        “grunt-contrib-watch”:“~0.5.3”
      }
    }
    
  4. 一旦你有了它,只需输入:npm install到控制台(在项目的根目录中)。这将安装必要的 grunt 插件/依赖项(来自上面的包文件)。

  5. 现在在你的项目的根目录中创建一个简单gruntfile.js的(它是你项目的一种配置):

    module.exports = 功能(咕噜声){
        grunt.initConfig({
    
    
        // 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' ]);
    
    };
  6. 完成后,您只需要构建它。在控制台中输入:

    咕哝
    

    或者 - 更好 - 如果你键入执行下面的命令 - grunt 将监视你的源文件的更改,如果你更改它们中的任何一个 - 它会自动构建它们:

    grunt watch --force
    

然后您可以添加更多插件,例如:css 缩小、css 预处理器(less、sass、stylus)、jshint 等。

于 2013-06-09T10:33:21.297 回答
21

如果您在 Linux/Mac 上并且可以访问 bash,则可以在多个 JS 文件上使用 uglifyjs,如下所示:

rm *.min.js; for f in *.js; do short=${f%.js}; uglifyjs $f > $short.min.js; done
于 2014-04-04T18:48:49.370 回答
13

仅 npm 方式:

  1. 跑:

    npm install uglifyjs-folder --save-dev
    
  2. 然后添加到您的package.json内容中,例如:

    "uglifyjs": "uglifyjs-folder js -eo jsm"
    
  3. 然后运行:

     npm run uglifyjs
    

请注意,如果您需要生成与源文件相同的文件夹(js),以下应该可以完成工作:

  1. 跑:

    npm install del-cli uglifyjs-folder --save-dev
    
  2. 然后添加到您的package.json内容中,例如:

    "uglifyjs": "del js/*.min.js; uglifyjs-folder js -eo js"
    
  3. 然后运行:

     npm run uglifyjs
    
于 2016-12-30T22:55:13.430 回答
8

除了上述答案,我现在在我的 .bashrc 文件中进行了设置:

alias minify='rm *.min.js; for f in *.js; do short=${f%.js}; uglifyjs $f > $short.min.js; done'
于 2014-04-25T11:53:49.590 回答
3

uglify-js不支持 ES6+,所以我建议在对任何路径递归执行的 shell 脚本下面使用terser(安装它运行):npm install terser -gterser

terser_path.sh

#!/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
于 2020-12-10T10:30:50.400 回答
2

您可以在 gruntfile.js 中使用此配置:

uglify: {
        all: {
            files: [{
                expand: true,
                cwd: '<path to js folder>',
                src: ['**/*.js', '!*.min.js'],
                dest: '<path to js folder>',
                ext: '.js'
            }]
        }
    }
于 2014-10-31T08:53:25.170 回答
0

制作一个 bat 文件,每行开头都有 start

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
于 2016-02-19T15:41:38.240 回答
0

你可以使用这个 npm 模块包

 npm i uglify-js-minify-css-allfiles
 npm i uglify-js clean-css
// making index.js file
const minifyAll = require('uglify-js-minify-css-allfiles');

// Folder Name (you will change all files in Folders)
minifyAll('../test/');

npm 包站点

于 2020-08-15T06:17:44.723 回答