Ответ 1
Если вы используете Connect, то мне повезло с Connect-Assetmanager
Есть ли в NodeJS модуль для конкатенации и минимизации файлов JavaScript?
Если вы используете Connect, то мне повезло с Connect-Assetmanager
Я рекомендую использовать UglifyJS, который является библиотекой JavaScript парсера/mangler/компрессора/декодера для NodeJS.
Если вы заинтересованы в инструментах автоматизации, которые делают больше, чем просто конкатенация и минимизация файлов, существуют следующие решения:
GruntJS - это инструмент построения командной строки на основе задач для проектов JavaScript. Текущая версия имеет следующие встроенные задачи:
Помимо этих задач есть много доступных плагинов.
Gulp - это инструментарий, который поможет вам автоматизировать болезненные или трудоемкие задачи в вашем рабочем процессе разработки. Для веб-разработки (если это ваша вещь) это может помочь вам, выполнив предварительную обработку CSS, пересылку JS, мини-настройку, повторную загрузку в реальном времени и многое другое. Интеграции встроены во все основные IDE, и люди любят gulp через PHP,.NET, Node.js, Java и т.д. С более чем 1700 плагинами (и вы можете обойтись без плагинов), gulp позволит вам выйти из системы сборки и вернуться к работе.
Yeoman - это надежный и упрямый набор инструментов, библиотек и рабочий процесс, которые могут помочь разработчикам быстро создавать красивые, убедительные веб-приложения.
UglifyJS - это модуль Node, который посвящен минимизации javascript. Я не думаю, что он также присоединяется к файлам, но может быть вариант, который я пропустил.
Edit: С UglifyJS 2 он также встроен в конкатенацию.
Если вы хотите сделать это в своем приложении Node, это очень просто. Это позволяет динамически генерировать ваш миниатюрный/конкатенированный js script во время выполнения без использования способа хрюка или йорма.
npm install uglify-js
и в вашем модуле:
var fs = require('fs');
var uglify = require("uglify-js");
var uglified = uglify.minify(['file1.js', 'file2.js', 'file3.js']);
fs.writeFile('concat.min.js', uglified.code, function (err){
if(err) {
console.log(err);
} else {
console.log("Script generated and saved:", 'concat.min.js');
}
});
Вам лучше использовать что-то вроде gulp/webpack для конкат/упорядочения/объединения ваших активов.
Чтобы присоединиться к js файлу, вы можете сделать его в твиттере bootstrap makefile
cat js/bootstrap-transition.js js/bootstrap-alert.js js/bootstrap-button.js js/bootstrap-carousel.js js/bootstrap-collapse.js js/bootstrap-dropdown.js js/bootstrap-modal.js js/bootstrap-tooltip.js js/bootstrap-popover.js js/bootstrap-scrollspy.js js/bootstrap-tab.js js/bootstrap-typeahead.js > docs/assets/js/bootstrap.js
Это просто конкатенация файлов с выходом в файл js
Затем вы можете установить uglify-js для минимизации js:
npm -g install uglify-js
И выполните эту команду с вашим путем /file.js ofc:
uglifyjs docs/assets/js/bootstrap.js -nc > docs/assets/js/bootstrap.min.js
Как упоминалось в комментариях с uglifyjs 2, вы также можете:
uglifyjs --compress --mangle -- input.js
Если вам нравится подход к конвейеру активов Rails 3.1, вы должны попробовать мою библиотеку connect-assets.
Попробуйте эти два плагина для Grunt
https://www.npmjs.org/package/grunt-contrib-concat
https://www.npmjs.org/package/grunt-contrib-uglify
Вы можете установить все, что вам нужно:
npm install grunt
npm install grunt-cli
npm install grunt-contrib-concat
npm install grunt-contrib-uglify
Затем создайте свой файл grunt, например:
Gruntfile.js
module.exports = function(grunt){
grunt.initConfig({
concat: {
options: {
process: function(src, path){
return '\n/* Source: ' + path + ' */\n' + src;
}
},
src: [
'../src/**/*.js'
],
dest: '../bin/app-debug.js'
},
uglify: {
src: '../bin/app-debug.js',
dest: '../bin/app.js'
},
watch: {
options: {
atBegin: true,
event: ['all']
},
src: {
files: '../src/**/*.js',
tasks: ['concat']
},
dist: {
files: '../bin/app-debug.js',
tasks: ['uglify']
},
}
}
grunt.loadNpmTasks('grunt-contrib-concat');
grunt.loadNpmTasks('grunt-contrib-uglify');
grunt.registerTask('default', ['watch']);
}
Наконец, напечатайте grunt
в терминале, и Grunt начнет просматривать ваши файлы JavaScript для изменений и автоматически concat и ouglify их (всякий раз, когда вы сохраняете изменения в js файлах в../src/
Возможно, не совсем то, что вы ищете, но Enderjs может работать.
Я бы определенно предложил простой режим компилятора Closure.