Как уменьшить несколько файлов 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
Или любая идея, которая может мне помочь.
Спасибо.
Ответы
Ответ 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