Use mincer to concatenate your sources.
Install this grunt plugin next to your project's grunt.js gruntfile with: npm install grunt-mincer
Then add this line to your project's grunt.js
gruntfile:
grunt.loadNpmTasks('grunt-mincer');
Mincer is a multi task, meaning that grunt will automatically iterate over all
mince
targets if a target is not specified.
Inside your grunt.js
file, add a section named mince
.
Name of the file to be processed by mincer. It probably contains one or more mincer require
directives. If source is not specified your target name with .js
suffix will be used.
Output file: this is where mincer is going to dump your concatenated sources.
If dest
is not specified destDir
and the name of your target are used to determine the name of
the output file: path.join(destDir, target + '.js')
List of directories that are added to mincer load path. If you have only one directory it can be specified as a single string.
Use to define helpers functions for EJS module. You can preprocess any resource with EJS as long as
you use ejs
extension.
Object with configuration options for each mincer engine.
Optional configure function that is called before before compile
phase: allows for direct access to mincer object.
There are couple of formats you can use to configure mincer task.
'mince': {
'main': {
include: ['src', 'module/src'],
src: 'main.js',
dest: 'build/main.js'
}
}
You can skip src
if it has the same basename as your target:
'mince': {
'main': {
include: ['src', 'module/src'],
dest: 'build/main.js'
}
}
You can specify destDir
instead of dest
if your output file has the same basename as your target:
'mince': {
'main': {
include: ['src', 'module/src'],
destDir: 'build'
}
}
And if you only have one include
directory you can specify it as string:
'mince': {
'main': {
include: 'src',
destDir: 'build'
}
}
You can use different format for each target.
You can configure Mincer engines: this configures CoffeeEngine
to use bare
compilation option,
and instructs StylusEngine
to use nib
.
'mince': {
'main': {
include: 'src',
destDir: 'build',
engines: {
'Coffee': { bare: true },
'Stylus': function(stylus) {
stylus.use(require('nib')());
}
}
}
}
You can also define EJS helpers in your gruntfile:
'mince': {
'main': {
include: 'src',
src: 'main.js.ejs',
destDir: 'build',
helpers: {
version: function() { return "3.2.1"; }
}
}
}
To access Mincer
directly used configure
option:
'mince': {
'main': {
include: 'src',
destDir: 'build',
configure: function(mincer) {
// call any mincer functions here
mincer.logger.use({
error: function(msg) {
// set up special error logger
}
});
}
}
}
In lieu of a formal styleguide, take care to maintain the existing coding style. Add unit tests for any new or changed functionality. Lint and test your code using grunt.
- grunt-mincer 0.2 is compatible with grunt 0.3
- grunt-mincer 0.3 and newer is compatible with grunt 0.4
See History.md
Copyright (c) 2012 (pirxpilot) Damian Krzeminski Licensed under the MIT license.