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

Конкатентные и миниатюрные JS файлы в Node

Есть ли в NodeJS модуль для конкатенации и минимизации файлов JavaScript?

4b9b3361

Ответ 1

Если вы используете Connect, то мне повезло с Connect-Assetmanager

Ответ 2

Я рекомендую использовать UglifyJS, который является библиотекой JavaScript парсера/mangler/компрессора/декодера для NodeJS.

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

  • GruntJS - это инструмент построения командной строки на основе задач для проектов JavaScript. Текущая версия имеет следующие встроенные задачи:

    • concat - объединить файлы.
    • init - создать проектные леса из предопределенного шаблона.
    • lint - проверка файлов с помощью JSHint.
    • min - Минимизировать файлы с помощью UglifyJS.
    • qunit - выполнить QUnit модульные тесты в безголовом PhantomJS.
    • server - запуск статического веб-сервера.

Помимо этих задач есть много доступных плагинов.

  • Gulp - это инструментарий, который поможет вам автоматизировать болезненные или трудоемкие задачи в вашем рабочем процессе разработки. Для веб-разработки (если это ваша вещь) это может помочь вам, выполнив предварительную обработку CSS, пересылку JS, мини-настройку, повторную загрузку в реальном времени и многое другое. Интеграции встроены во все основные IDE, и люди любят gulp через PHP,.NET, Node.js, Java и т.д. С более чем 1700 плагинами (и вы можете обойтись без плагинов), gulp позволит вам выйти из системы сборки и вернуться к работе.

  • Yeoman - это надежный и упрямый набор инструментов, библиотек и рабочий процесс, которые могут помочь разработчикам быстро создавать красивые, убедительные веб-приложения.

    • Lightning-fast scaffolding - легко создавать новые проекты с настраиваемыми шаблонами (например, HTML5 Boilerplate, Twitter Bootstrap), AMD (через RequireJS) и многое другое.
    • Автоматически компилировать CoffeeScript и Compass - наш LiveReload процесс просмотра автоматически компилирует исходные файлы и обновляет ваш браузер всякий раз, когда происходит изменение, поэтому вы не 't должен.
    • Автоматически использовать ваши сценарии. Все ваши сценарии автоматически запускаются с JSHint, чтобы гарантировать, что они следуют лучшим языковым методам.
    • Встроенный сервер предварительного просмотра - больше не нужно запускать собственный HTTP-сервер. Мой встроенный может быть запущен только с одной командой.
    • Оптимизация изображения Awesome - я оптимизирую все ваши изображения, используя OptiPNG и JPEGTran, чтобы ваши пользователи могли тратить меньше времени на загрузку активов и больше времени, используя ваше приложение.
    • Генерация манифеста AppCache - я создаю манифесты кэша приложений для вас. Просто создайте проект и бум. Вы получите его бесплатно.
    • Процесс сборки убийцы. Вы получаете не только минирование и конкатенацию; Я также оптимизирую все ваши файлы изображений, HTML, скомпилирую CoffeeScript и Compass, создайте манифест кэш приложения и, если вы используете AMD, мы передадим эти модули через r.js, чтобы вам не пришлось.
    • Интегрированное управление пакетами - нужна зависимость? Это просто нажатие клавиши. Я разрешаю вам легко искать новые пакеты через командную строку (например, yoman искать jquery), устанавливать их и сохранять их без изменений необходимо открыть браузер.
    • Поддержка синтаксиса модуля ES6 - экспериментируйте с модулями записи, используя последний синтаксис модуля ECMAScript 6. Это экспериментальная функция, которая пересылается обратно на ES5, поэтому вы можете использовать код во всех современных браузерах.
    • Тестирование модулей PhantomJS - легко запускайте свои модульные тесты в безгласном WebKit с помощью PhantomJS. Когда вы создаете новое приложение, я также включаю некоторые тестовые леса для вашего приложения.

Ответ 3

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');
  }      
});

Ответ 4

Вам лучше использовать что-то вроде 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

Ответ 5

Если вам нравится подход к конвейеру активов Rails 3.1, вы должны попробовать мою библиотеку connect-assets.

Ответ 6

Попробуйте эти два плагина для 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/

Ответ 7

Возможно, не совсем то, что вы ищете, но Enderjs может работать.

Ответ 8

Я бы определенно предложил простой режим компилятора Closure.