-
Armand Bahi authoredArmand Bahi authored
Gruntfile.js 7.38 KiB
module.exports = function (grunt) {
// npm install grunt --save
// npm install -g grunt-cli
// npm install grunt-closure-tools --save
// npm install google-closure-compiler@20160911.0.0 --save
// npm install google-closure-library@20160911.0.0 --save
var compilerPackage = require('google-closure-compiler');
compilerPackage.grunt(grunt);
var devMode = grunt.option('dev');
var sHome = '../';
if (devMode) {
sHome = '../client/';
}
var sClosureDepsHome = '../../../../../';
// Project configuration.
grunt.initConfig({
'closure-compiler': {
vMap: {
files: {
[sHome + 'javascript/vmap.min.js']: [
// Fichiers Vitis
sHome + 'javascript/require/*.js',
sHome + 'javascript/app/**/*.js',
sHome + 'javascript/externs/formReader/**/*.js',
sHome + 'javascript/externs/mapJSON/**/*.js',
sHome + 'modules/vitis/javascript/**/*.js',
// OpenLayers
sHome + 'javascript/externs/openLayers/**/*.js',
// Fichiers vMap
sHome + 'conf/requires/*.js',
sHome + 'modules/vmap/javascript/app/**/*.js',
sHome + 'modules/vmap/javascript/vitis/**/*.js',
// Fichiers Studio
sHome + 'javascript/externs/studio/properties/properties.js',
sHome + 'javascript/externs/studio/javascript/app/**/*.js',
// Fichiers vMap4MapServer
sHome + 'modules/vm4ms/javascript/**/*.js',
// Fichiers ANC
sHome + 'modules/anc/javascript/**/*.js'
]
},
options: {
js: [
'node_modules/google-closure-library/closure/goog/**.js',
'!node_modules/google-closure-library/closure/goog/**_test.js'
],
externs: [
'closure/externs/angular-1.3.js',
'closure/externs/bingmaps.js',
'closure/externs/jquery-1.9.js',
'closure/externs/bootstrap.js',
'closure/externs/geojson.js',
'closure/externs/jspdf.js',
'closure/externs/html2canvas.js',
'closure/externs/vmap.js'
],
compilation_level: 'SIMPLE',
manage_closure_dependencies: true,
generate_exports: true,
angular_pass: true,
debug: false,
language_in: 'ECMASCRIPT5',
language_out: 'ECMASCRIPT5',
closure_entry_point: ['vmap', 'vitis', 'oVFB'],
create_source_map: sHome + 'javascript/vmap.min.js.map',
output_wrapper: '(function(){\n%output%\n}).call(this)\n//# sourceMappingURL=../javascript/vmap.min.js.map'
}
},
studio: {
files: {
[sHome + 'javascript/externs/studio/javascript/studio.min.js']: [
// Fichiers Studio
sHome + 'javascript/externs/studio/properties/properties.js',
sHome + 'javascript/externs/studio/javascript/app/**/*.js'
]
},
options: {
compilation_level: 'WHITESPACE_ONLY',
angular_pass: true,
language_in: 'ECMASCRIPT5',
language_out: 'ECMASCRIPT5',
closure_entry_point: ['oVFB']
}
},
formReader: {
files: {
[sHome + 'javascript/externs/formReader/formReader.min.js']: [
// Fichiers FormReader
sHome + 'javascript/externs/formReader/**/*.js'
]
},
options: {
compilation_level: 'WHITESPACE_ONLY',
angular_pass: true,
language_in: 'ECMASCRIPT5',
language_out: 'ECMASCRIPT5'
}
}
},
'closureDepsWriter': {
options: {
depswriter: 'closure/depswriter/depswriter.py',
root_with_prefix: [
// Fichiers Vitis
'"' + sHome + 'javascript/app ' + sClosureDepsHome + 'javascript/app"',
'"' + sHome + 'modules/vitis/javascript ' + sClosureDepsHome + 'modules/vitis/javascript"',
'"' + sHome + 'javascript/externs/formReader ' + sClosureDepsHome + 'javascript/externs/formReader"',
'"' + sHome + 'javascript/externs/mapJSON ' + sClosureDepsHome + 'javascript/externs/mapJSON"',
'"' + sHome + 'conf/requires ' + sClosureDepsHome + 'conf/requires"',
// OpenLayers
'"' + sHome + 'javascript/externs/openLayers ' + sClosureDepsHome + 'javascript/externs/openLayers"',
// Fichiers vMap
'"' + sHome + 'modules/vmap/javascript/app ' + sClosureDepsHome + 'modules/vmap/javascript/app"',
'"' + sHome + 'modules/vmap/javascript/vitis ' + sClosureDepsHome + 'modules/vmap/javascript/vitis"',
// Fichiers Studio
'"' + sHome + 'javascript/externs/studio/properties ' + sClosureDepsHome + 'javascript/externs/studio/properties"',
'"' + sHome + 'javascript/externs/studio/javascript/app ' + sClosureDepsHome + 'javascript/externs/studio/javascript/app"',
// Fichiers vMap4MapServer
'"' + sHome + 'modules/vm4ms/javascript ' + sClosureDepsHome + 'modules/vm4ms/javascript"',
// Fichiers vMap4MapServer
'"' + sHome + 'modules/anc/javascript ' + sClosureDepsHome + 'modules/anc/javascript"',
// Closure library
'"' + sHome + 'conf/node_modules/google-closure-library/closure/goog ' + sClosureDepsHome + 'conf/node_modules/google-closure-library/closure/goog"'
]
},
targetName: {
dest: sHome + 'javascript/vmap.deps.js'
}
}
});
grunt.loadNpmTasks('grunt-closure-tools');
// Tache par défaut
// cmd: grunt
grunt.registerTask('default', ['closureDepsWriter', 'closure-compiler:vMap']);
// cmd: grunt generate-deps
grunt.registerTask('generate-deps', ['closureDepsWriter']);
// cmd: grunt studio minify
grunt.registerTask('minify-studio', ['closure-compiler:studio']);
// cmd: grunt formReader minify
grunt.registerTask('minify-formReader', ['closure-compiler:formReader']);
// cmd: grunt formReader and studio minify
grunt.registerTask('minify-libs', ['closure-compiler:formReader', 'closure-compiler:studio']);
// cmd: grunt compile
grunt.registerTask('compile', ['closure-compiler:vMap']);
};