Files
tryton/Gruntfile.js
T
Cédric Krier e6c6bc9fdb Allow production build without development dependencies
By default, sao package should be installed with the production option and the
npm task loaded only on demand to reduce.

issue6176
review33741002
2017-01-13 20:11:17 +01:00

161 lines
4.3 KiB
JavaScript

module.exports = function(grunt) {
var _ = grunt.util._;
var locales = ["bg", "ca", "cs", "de", "es", "es_AR", "es_CO", "es_EC",
"es_MX", "fr", "hu", "it", "lo", "lt", "nl", "pt_BR", "ru", "sl", "zh_CN"];
var jsfiles = [
'src/sao.js',
'src/rpc.js',
'src/pyson.js',
'src/session.js',
'src/model.js',
'src/tab.js',
'src/screen.js',
'src/view.js',
'src/view/form.js',
'src/view/tree.js',
'src/view/graph.js',
'src/view/calendar.js',
'src/action.js',
'src/common.js',
'src/window.js',
'src/wizard.js',
'src/board.js'
];
// Project configuration.
grunt.initConfig({
pkg: grunt.file.readJSON('package.json'),
xgettext: {
locale: {
files: {
javascript: jsfiles
},
options: {
functionName: "Sao.i18n.gettext",
potFile: "locale/messages.pot"
},
}
},
shell: {
options: {
failOnError: true
},
msgmerge: {
command: _.map(locales, function(locale) {
var po = "locale/" + locale + ".po";
return "msgmerge -U " + po + " locale/messages.pot;";
}).join("")
}
},
po2json: {
options: {
format: 'raw'
},
all: {
src: ['locale/*.po'],
dest: 'locale/'
}
},
concat: {
dist: {
src: jsfiles,
dest: 'dist/<%= pkg.name %>.js'
}
},
jshint: {
dist: {
options: {
jshintrc: 'src/.jshintrc'
},
src: ['dist/<%= pkg.name %>.js']
},
grunt: {
src: ['Gruntfile.js']
},
tests: {
options: {
jshintrc: 'tests/.jshintrc'
},
src: ['tests/*.js']
}
},
uglify: {
options: {
banner: '/*! <%= pkg.name %>-<%= pkg.version %> | GPL-3\n' +
'This file is part of Tryton. ' +
'The COPYRIGHT file at the top level of\n' +
'this repository contains the full copyright notices ' +
'and license terms. */\n'
},
dist: {
src: 'dist/<%= pkg.name %>.js',
dest: 'dist/<%= pkg.name %>.min.js'
}
},
less: {
dev: {
options: {
paths: ['src', 'bower_components/bootstrap/less']
},
files: {
'dist/<%= pkg.name %>.css': 'src/*.less'
}
},
'default': {
options: {
paths: ['src', 'bower_components/bootstrap/less'],
yuicompress: true
},
files: {
'dist/<%= pkg.name %>.min.css': 'src/*.less'
}
}
},
watch: {
scripts: {
files: ['src/*.js'],
tasks: ['concat', 'jshint']
},
styles: {
files: ['src/*.less'],
tasks: 'less:dev'
}
},
qunit: {
all: ['tests/*.html']
}
});
grunt.registerTask('default', 'Build for production.', function() {
grunt.loadNpmTasks('grunt-contrib-concat');
grunt.loadNpmTasks('grunt-contrib-jshint');
grunt.loadNpmTasks('grunt-contrib-uglify');
grunt.loadNpmTasks('grunt-contrib-less');
grunt.loadNpmTasks('grunt-po2json');
grunt.task.run(['concat', 'jshint', 'uglify', 'less', 'po2json']);
});
grunt.registerTask('dev', 'Build for development.', function() {
grunt.loadNpmTasks('grunt-contrib-concat');
grunt.loadNpmTasks('grunt-contrib-jshint');
grunt.loadNpmTasks('grunt-contrib-less');
grunt.task.run(['concat', 'jshint', 'less:dev']);
});
grunt.registerTask('devwatch', 'Watch development', function() {
grunt.loadNpmTasks('grunt-contrib-watch');
grunt.task.run(['watch']);
});
grunt.registerTask('msgmerge', 'Update locale messages.', function() {
grunt.loadNpmTasks('grunt-shell');
grunt.task.run(['shell:msgmerge']);
});
grunt.registerTask('test', 'Run tests', function() {
grunt.loadNpmTasks('grunt-contrib-concat');
grunt.loadNpmTasks('grunt-contrib-jshint');
grunt.loadNpmTasks('grunt-contrib-less');
grunt.loadNpmTasks('grunt-contrib-qunit');
grunt.task.run(['concat', 'jshint', 'less:dev', 'qunit']);
});
};