- 
                Notifications
    
You must be signed in to change notification settings  - Fork 55
 
overview
node-build-script is a tool that optimizes your code for production use on the web, relying on grunt build tool.
It is packaged as a grunt plugin, it defines an h5bp binary which wraps grunt
plus few additional tasks and helpers.
But nothing is forcing you to install this package globally, you can
decide to pull in the set of tasks and helper in your grunt setup,
instead of relying on the global h5bp binary.
node-build-script is not available on npm yet, but you can install it via npm very much the same way.
Installing the package is as simple as running the following command:
npm install https://github.com/h5bp/node-build-script/tarball/master
You can find more detailed documentation in the installation section.
This assumes the package was installed globally. If it was installed
locally, simply replace h5bp by grunt in the following commands
Running h5bp --help should output the following to the console
grunt: a task-based command line build tool for JavaScript projects. (v0.3.7)
Usage
 h5bp [options] [task [task ...]]
Options
    --help, -h  Display this help text.
        --base  Specify an alternate base path. By default, all file paths are
                relative to the "grunt.js" gruntfile. (grunt.file.setBase) *
    --no-color  Disable colored output.
      --config  Specify an alternate "grunt.js" gruntfile.
   --debug, -d  Enable debugging mode for tasks that support it. For detailed
                error stack traces, specify --debug 9.
   --force, -f  A way to force your way past warnings. Want a suggestion? Don't
                use this option, fix your code.
       --tasks  Additional directory paths to scan for task and "extra" files.
                (grunt.loadTasks) *
         --npm  Npm-installed grunt plugins to scan for task and "extra" files.
                (grunt.loadNpmTasks) *
    --no-write  Disable writing files (dry run).
 --verbose, -v  Verbose mode. A lot more information output.
     --version  Print the grunt version.
Options marked with * have methods exposed via the grunt API and should instead
be specified inside the "grunt.js" gruntfile wherever possible.
Available tasks
        concat  Concatenate files. *
          init  Generate project scaffolding from a predefined template.
          lint  Validate files with JSHint. *
           min  Minify files with UglifyJS. *
         qunit  Run QUnit unit tests in a headless PhantomJS instance. *
        server  Start a static web server.
          test  Run unit tests with nodeunit. *
         watch  Run predefined tasks whenever watched files change.
       default  Alias for "intro clean mkdirs concat css min rev usemin
                manifest" tasks.
        reload  Alias for "default connect watch:reload" tasks.
           css  Concats, replaces @imports and minifies the CSS files *
         intro  Kindly inform the developer about the impending magic
        mkdirs  Prepares the build dirs *
         clean  Wipe the previous build dirs
      manifest  Generates manifest files automatically from static assets
                reference. *
           rev  Automate the hash renames of assets filename *
         serve  Spawns up a local http server on both staging / output
                directory
        usemin  Replaces references to non-minified scripts / stylesheets *
Tasks run in the order specified. Arguments may be passed to tasks that accept
them by using colons, like "lint:files". Tasks marked with * are "multi
tasks" and will iterate over all sub-targets if no argument is specified.
The list of available tasks may change based on tasks directories or grunt
plugins specified in the "grunt.js" gruntfile or via command-line options.
For more information, see https://github.com/cowboy/grunt
You may opt to go for the local install, and manually load the tasks and helpers the node-build-script provides.
Assuming you have no gruntfile yet for your project, run the following grunt init command:
grunt init:gruntfile
Grunt will ask you for few different things, simply follow the instructions.
This will create a new grunt.js file relative to your current working
directory.
The generated gruntfile should look like this (depending on the answers to the few questions, check out related grunt documentation)
/*global module:false*/
module.exports = function(grunt) {
  // Project configuration.
  grunt.initConfig({
    pkg: '<json:package.json>',
    meta: {
      banner: '/*! <%= pkg.title || pkg.name %> - v<%= pkg.version %> - ' +
        '<%= grunt.template.today("yyyy-mm-dd") %>\n' +
        '<%= pkg.homepage ? "* " + pkg.homepage + "\n" : "" %>' +
        '* Copyright (c) <%= grunt.template.today("yyyy") %> <%= pkg.author.name %>;' +
        ' Licensed <%= _.pluck(pkg.licenses, "type").join(", ") %> */'
    },
    lint: {
      files: ['grunt.js', 'lib/**/*.js', 'test/**/*.js']
    },
    qunit: {
      files: ['test/**/*.html']
    },
    concat: {
      dist: {
        src: ['<banner>', '<file_strip_banner:lib/<%= pkg.name %>.js>'],
        dest: 'dist/<%= pkg.name %>.js'
      }
    },
    min: {
      dist: {
        src: ['<banner>', '<config:concat.dist.dest>'],
        dest: 'dist/<%= pkg.name %>.min.js'
      }
    },
    watch: {
      files: '<config:lint.files>',
      tasks: 'lint qunit'
    },
    jshint: {
      options: {
        curly: true,
        eqeqeq: true,
        immed: true,
        latedef: true,
        newcap: true,
        noarg: true,
        sub: true,
        undef: true,
        boss: true,
        eqnull: true,
        browser: true
      },
      globals: {
        jQuery: true
      }
    },
    uglify: {}
  });
  // Default task.
  grunt.registerTask('default', 'lint qunit concat min');
};To load the node-build-script and helpers, you'll need to use
grunt.loadNpmTasks('node-build-script')next to
grunt.registerTask('default', 'lint qunit concat min');Then, from your projet's root, running grunt --help should output the
following:
...
Available tasks
        concat  Concatenate files. *
          init  Generate project scaffolding from a predefined template.
          lint  Validate files with JSHint. *
           min  Minify files with UglifyJS. *
         qunit  Run QUnit unit tests in a headless PhantomJS instance. *
        server  Start a static web server.
          test  Run unit tests with nodeunit. *
         watch  Run predefined tasks whenever watched files change.
       default  Alias for "lint qunit concat min" tasks.
          emit  A basic task that emits events over socket.io
       connect  Spawns up a local http server with socket.io enabled
           css  Concats, replaces @imports and minifies the CSS files *
         intro  Kindly inform the developer about the impending magic
        mkdirs  Prepares the build dirs *
         clean  Wipe the previous build dirs
      manifest  Generates manifest files automatically from static assets
                reference. *
           rev  Automate the hash renames of assets filename *
         serve  Spawns up a local http server on both staging / output
                directory
        usemin  Replaces references to non-minified scripts / stylesheets *
...