Git Product home page Git Product logo

node-minify's Introduction

Build Status Build status Coverage Status Dependency Status devDependency Status NPM version NPM downloads

Node-minify

A very light minifier NodeJS module.

Support:

  • YUI Compressor --version 2.4.7
  • Google Closure Compiler --version v20130411
  • UglifyJS2
  • Clean-css
  • CSSO
  • Sqwish

It allow you to compress JavaScript and CSS files.

CSS benchmark : http://goalsmashers.github.io/css-minification-benchmark/

I recommend to execute it at boot time for production use.

See server.js in examples/.

Installation

npm install node-minify

Quick Start

var compressor = require('node-minify');

// Using Google Closure
new compressor.minify({
  type: 'gcc',
  fileIn: 'public/js/base.js',
  fileOut: 'public/js-dist/base-min-gcc.js',
  callback: function(err, min){
    console.log(err);
    //console.log(min);
  }
});

// Array
new compressor.minify({
  type: 'gcc',
  fileIn: ['public/js/base.js', 'public/js/base2.js'],
  fileOut: 'public/js-dist/base-onefile-gcc.js',
  callback: function(err, min){
    console.log(err);
    //console.log(min);
  }
});

// Only concatenation of files (no compression)
new compressor.minify({
    type: 'no-compress',
    fileIn: ['public/js/base.js', 'public/js/base2.js'],
    fileOut: 'public/js-dist/base-onefile-gcc.js',
    callback: function(err, min){
      console.log(err);
      //console.log(min);
    }
});

// Using YUI Compressor for CSS
new compressor.minify({
  type: 'yui-css',
  fileIn: 'public/css/base.css',
  fileOut: 'public/css/base-min-yui.css',
  callback: function(err, min){
    console.log(err);
    //console.log(min);
  }
});

// Using YUI Compressor for JS
new compressor.minify({
  type: 'yui-js',
  fileIn: 'public/js/base.js',
  fileOut: 'public/js-dist/base-min-yui.js',
  callback: function(err, min){
    console.log(err);
    //console.log(min);
  }
});

// Using UglifyJS for JS
new compressor.minify({
  type: 'uglifyjs',
  fileIn: 'public/js/base.js',
  fileOut: 'public/js-dist/base-onefile-uglify.js',
  callback: function(err, min){
    console.log(err);
    //console.log(min);
  }
});

// Using Sqwish for CSS
new compressor.minify({
    type: 'sqwish',
  fileIn: ['public/css/base.css', 'public/css/base2.css'],
  fileOut: 'public/css/base-min-sqwish.css',
    callback: function(err, min){
      console.log('Sqwish');
      console.log(err);
      //console.log(min);
    }
});

// Using public folder option
new compressor.minify({
    type: 'yui-js',
    publicFolder: 'public/js/',
    fileIn: 'base.js',
    fileOut: 'public/js-dist/base-min-yui-publicfolder.js',
    callback: function(err, min){
      console.log('YUI JS with publicFolder option');
      console.log(err);
      //console.log(min);
    }
});

// Using Clean-css for CSS
new compressor.minify({
    type: 'clean-css',
  fileIn: ['public/css/base.css', 'public/css/base2.css'],
  fileOut: 'public/css/base-min-cleancss.css',
    callback: function(err, min){
      console.log('Clean-css');
      console.log(err);
      //console.log(min);
    }
});

// Using CSSO for CSS
new compressor.minify({
    type: 'csso',
  fileIn: ['public/css/base.css', 'public/css/base2.css'],
  fileOut: 'public/css/base-min-csso.css',
    callback: function(err, min){
      console.log('CSSO');
      console.log(err);
      //console.log(min);
    }
});

Concatenate Files

In order to concatenate files, simply pass in an array with the file paths to fileIn.

fileIn: ['public/js/base.js', 'public/js/base2.js', ...]

Using sync option

new compressor.minify({
  type: 'yui-js',
  publicFolder: 'public/js/',
  fileIn: 'base.js',
  fileOut: 'public/js-dist/base-min-yui-publicfolder.js',
  sync: true,
  callback: function(err, min) {
    console.log('YUI JS with publicFolder option');
    console.log(err);
    //console.log(min);
  }
});

Using wildcards

new compressor.minify({
  type: 'gcc',
  fileIn: 'public/**/*.js',
  fileOut: 'public/js-dist/wildcards-match-gcc.js',
  callback: function(err, min){
    console.log('wildcards match GCC');
    console.log(err);
    //console.log(min);
  }
});

Passing options

You can pass any option/flag you want

options: ['--option=1', '--option=2']

new compressor.minify({
  type: 'gcc',
  language: 'ECMASCRIPT5',
  fileIn: 'public/js/jquery-2.0.3.js',
  fileOut: 'public/js-dist/jquery-2.0.3-gcc.js',
  options: ['--option=1', '--option=2'],
  callback: function(err, min){
    console.log('GCC jquery 2.0');
    console.log(err);
    //console.log(min);
  }
});

Max Buffer Size

In some cases you might need a bigger max buffer size (for example when minifying really large files). By default the buffer is 1000 * 1024 which should be enough. If you however need more buffer, you can simply pass in the desired buffer size as an argument to compressor.minify like so:

new compressor.minify({
  type: 'uglifyjs',
  fileIn: './public/css/base.css',
  fileOut: './public/css/base-min-uglifyjs.css',
  buffer: 1000 * 1024,
  callback: function(err){
    console.log(err);
  }
});

Temp Path

You can define a temporary folder where temporary files will be generated :

new compressor.minify({
  type: 'yui-js',
  fileIn: 'public/js/base.js',
  fileOut: 'public/js-dist/base-min-yui.js',
  tempPath: '/tmp/',
  callback: function(err){
    console.log(err);
  }
});

YUI Compressor

Yahoo Compressor can compress both JavaScript and CSS files.

http://developer.yahoo.com/yui/compressor/

Google Closure Compiler

Google Closure Compiler can compress only JavaScript files.

It will throw an error if you try with CSS files.

https://developers.google.com/closure/compiler/

UglifyJS

UglifyJS can compress only JavaScript files.

It will throw an error if you try with CSS files.

https://github.com/mishoo/UglifyJS

Clean-css

Clean-css can compress only CSS files.

https://github.com/GoalSmashers/clean-css

CSSO

CSSO can compress only CSS files.

https://github.com/css/csso

Sqwish

Sqwish can compress only CSS files.

https://github.com/ded/sqwish

Warning

It assumes you have Java installed on your environment for both GCC and YUI Compressor. To check, run:

java -version

Windows support

Since v0.5.0, a windows support is available for the no-compress option and uglify-js (thanks to pieces029 and benpusherhq)

node-minify's People

Contributors

srod avatar sebbo2002 avatar brianberlin avatar mathiasbynens avatar alexbardas avatar dsego avatar icoloma avatar stefanoortisi avatar

Watchers

James Cloos avatar Gorden avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.