Подтвердить что ты не робот

Как уменьшить несколько файлов Javascript в папке с помощью UglifyJS?

Здравствуйте, я использую uglifyJs, чтобы минимизировать мои файлы javascript, он хорошо работает с одним файлом за раз, что я хочу, чтобы минимизировать все файлы javascript, присутствующие в папке JS, в папку JSM, чтобы быть ясным, у меня есть 2 файла в моей папке JS, называемой test1.js и test2.js, и я хочу запустить uglify против этой папки и сгенерировать test1.min.js и test2.min.js внутри папки JSM, так что есть способ сделать это? команда вроде:

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

Или любая идея, которая может мне помочь.

Спасибо.

4b9b3361

Ответ 1

Я знаю, что это может показаться огромным шагом, но я бы рекомендовал использовать grunt. Это действительно просто, как только вы получите его.

Здесь происходит крушение:

  • Установите NodeJS
  • Установите Grunt CLI (просто введите это в консоли/терминале):

    npm install -g grunt-cli
    
  • Создайте простой файл package.json в корне вашего проекта:

    {
      "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"
      }
    }
    
  • После этого просто введите: npm install на консоль (в корне вашего проекта). Это установит необходимые плагины/зависимости grunt (из файла пакета выше).

  • Теперь создайте простой gruntfile.js в корне вашего проекта (это своего рода конфигурация для вашего проекта):

    module.exports = function (grunt) {
        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' ]);
    
    };
  • После этого вам просто нужно его построить. Введите консоль:

    grunt
    

    или - лучше - если вы наберете следующую команду: grunt будет отслеживать ваши исходные файлы для изменений, а если вы измените любой из них - он будет автоматически их строить:

    grunt watch --force
    

Затем вы можете добавить дополнительные плагины, например: css minification, препроцессоры css (меньше, sass, stylus), jshint и т.д.

Ответ 2

Если вы находитесь на Linux/Mac и имеете доступ к bash, вы можете использовать uglifyjs для нескольких файлов JS, например:

rm *.min.js; for f in *.js; do short=${f%.js}; uglifyjs $f > $short.min.js; done

Ответ 3

В дополнение к вышеприведенному ответу я теперь установил этот файл в моем файле .bashrc:

alias minify='rm *.min.js; for f in *.js; do short=${f%.js}; uglifyjs $f > $short.min.js; done'

Ответ 4

npm-only:

  • пробег:

    npm install uglifyjs-folder --save-dev
    
  • а затем добавьте в свой package.json что-то вроде:

    "uglifyjs": "uglifyjs-folder js -eo jsm"
    
  • затем запустите:

     npm run uglifyjs
    

Обратите внимание, что если вам нужно создать в той же папке, что и исходные файлы (js), выполните следующие действия:

  • пробег:

    npm install del-cli uglifyjs-folder --save-dev
    
  • а затем добавьте в свой package.json что-то вроде:

    "uglifyjs": "del js/*.min.js; uglifyjs-folder js -eo js"
    
  • затем запустите:

     npm run uglifyjs
    

Ответ 5

Вы можете использовать эту конфигурацию в файле gruntfile.js:

uglify: {
        all: {
            files: [{
                expand: true,
                cwd: '<path to js folder>',
                src: ['**/*.js', '!*.min.js'],
                dest: '<path to js folder>',
                ext: '.js'
            }]
        }
    }

Ответ 6

создать файл bat с запуском при каждой строке начала

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