mirror of
https://github.com/LaCasemate/fab-manager.git
synced 2025-01-06 21:46:17 +01:00
79 lines
2.1 KiB
JavaScript
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);
|
||
|
});
|
||
|
});
|
||
|
};
|