g33k-packer

Live assets packer with uglify/less/htmlminifier with live reload support

npm install g33k-packer
6 downloads in the last week
24 downloads in the last month

G33K PACKER

How To Use

In our project firectory, the best is to create a folder called 'packer' at the project root. In the folder, create a file 'index.js' and copy the sample code to it.

By default, the sample code will move his working directory to the project root process.chdir(path.normalize(__dirname+'/../')) ;

workingDir variable will be the root of your project.

Options

  • packages : could be an object like in sample code or a json file

Run

Run it by being placed in your root directory and call

node packer/

Sample Code

// Test if packer is installed
try {
    console.log(require.resolve("g33k-packer"));
} catch(e) {
    console.error("g33k-packer package is not installed!\nPlease run `npm update` in the directory.");
    process.exit(e.code);
}

// Load libs
var path = require('path'),
    fs = require('fs'),
    Packer = require('g33k-packer'); 

// Change working path
process.chdir(path.normalize(__dirname+'/../')) ;

// Get working dir
var workingDir = process.cwd();

// Create Packer Instance
var packer = new Packer(workingDir, {

    // Debug
    debug: false,

    // Paths to scan in the working dir
    "scanPath": ["/app", "/public/assets"],

    // Only work on thoses extensions
    "scanExt": /\.(html|js|css|tpl|less)$/i,

    // Ignore files with regexp filters applied to full path
    "scanIgnore": /(tmp\/|server-.*\.js)/,

    // Packed path
    "packedPath": "/public/packed",

    // Minify options
    "minifyJS": true,
    "minifyCSS": true,
    "minifyHTML": true,

    // Watch for file updates every (in ms)
    "watch": 500,

    // Copy minfied unit files to packedPath
    "copy": false,

    // Enable livereload support 
    "livereload": true,

    // Declare packages
    "packages": {

        // Main CSS file (will be placed to packedPath/app.min.css)
        "/app.min.css": [
            "/assets/vendors/bootstrap/css/bootstrap.css",
            "/assets/vendors/markdown/highlight.monokai.css",
            "/assets/css/main.less",
            "/views/auth/style.less",
            "/views/discover/welcome.less",
        ],

        // Main JS file (will be placed to packedPath/app.min.js)
        "/app.min.js": [
            "/assets/vendors/jquery/jquery-1.10.2.min.js",
            "/assets/vendors/bootstrap/js/bootstrap.js",
            "/assets/vendors/async.js",
            "/assets/vendors/underscore/underscore-1.5.2.min.js",
            "/assets/vendors/backbone/backbone-1.0.min.js",
            "/assets/vendors/backbone/backbone.view.extend.js",
            "/assets/vendors/mustache.min.js",
            "/assets/vendors/markdown/markdown.js",
            "/assets/vendors/markdown/highlight.min.js",
            "/assets/vendors/moment+langs.js",
            "/assets/vendors/jquery.activity-indicator-1.0.0.min.js",
            "/assets/js/app.js"
        ]

    }

});
npm loves you