1
0
mirror of https://github.com/LaCasemate/fab-manager.git synced 2025-01-05 20:46:14 +01:00
fab-manager/vendor/assets/components/summernote/grunts/grunt-build.js
2015-05-13 18:30:35 +02:00

79 lines
2.1 KiB
JavaScript

module.exports = function (grunt) {
'use strict';
var requirejs = require('requirejs');
var path = require('path');
var rDefineStart = /define\([^{]*?{/;
var rDefineEndWithReturn = /\s*return\s+[^\}]+(\}\);[^\w\}]*)$/;
var rDefineEnd = /\}\);[^}\w]*$/;
grunt.registerMultiTask('build', 'concatenate source: summernote.js', function () {
/**
* Strip all definitions generated by requirejs
*
* @param {String} name
* @param {String} path
* @param {String} contents The contents to be written (including their AMD wrappers)
*/
var convert = function (name, path, contents) {
contents = contents.replace(rDefineStart, '');
if (rDefineEndWithReturn.test(contents)) {
contents = contents.replace(rDefineEndWithReturn, '');
} else {
contents = contents.replace(rDefineEnd, '');
}
return contents;
};
var outputPath = this.data.outFile;
/**
* Handle final output from the optimizer
*/
var out = function (compiled) {
// 01. Embed version
var version = grunt.config('pkg.version');
compiled = compiled.replace(/@VERSION/g, version);
// 02. Embed Date
var date = (new Date()).toISOString().replace(/:\d+\.\d+Z$/, 'Z');
compiled = compiled.replace(/@DATE/g, date);
grunt.file.write(outputPath, compiled);
};
var config = {
name: 'summernote/summernote',
baseUrl: this.data.baseUrl,
out: out,
optimize: 'none',
wrap: {
startFile: path.join(this.data.baseUrl, this.data.startFile),
endFile: path.join(this.data.baseUrl, this.data.endFile)
},
findNestedDependencies: true,
skipSemiColonInsertion: true,
onBuildWrite: convert,
excludeShallow: ['jquery', 'CodeMirror', 'app'],
paths: {
jquery: 'empty:',
CodeMirror: 'empty:'
},
packages: [{
name: 'summernote',
location: './',
main: 'summernote'
}]
};
var done = this.async();
requirejs.optimize(config, function () {
done();
}, function (err) {
done(err);
});
});
};