grunt-build.js 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. module.exports = function (grunt) {
  2. const version = grunt.config('pkg.version');
  3. const date = (new Date()).toISOString().replace(/:\d+\.\d+Z$/, 'Z');
  4. const banner = [
  5. `/**`,
  6. ` * Super simple wysiwyg editor v${version}`,
  7. ` * https://summernote.org`,
  8. ` *`,
  9. ` * Copyright 2013- Alan Hong. and other contributors`,
  10. ` * summernote may be freely distributed under the MIT license.`,
  11. ` *`,
  12. ` * Date: ${date}`,
  13. ` */`
  14. ].join('\n');
  15. const rollup = require('rollup');
  16. const rollupTypescript = require('rollup-plugin-typescript');
  17. const typescript = require('typescript');
  18. const replace = require('rollup-plugin-replace');
  19. const inputOptions = {
  20. external: ['jquery'],
  21. plugins: [
  22. rollupTypescript({
  23. typescript: typescript,
  24. include: ['**/*.js', '**/*.ts']
  25. }),
  26. replace({
  27. delimiters: ['@@', '@@'],
  28. VERSION: version
  29. })
  30. ]
  31. };
  32. const outputOptions = {
  33. banner,
  34. format: 'umd',
  35. sourcemap: true,
  36. globals: {
  37. 'jquery': 'jQuery'
  38. }
  39. };
  40. grunt.registerMultiTask('build', 'concatenate source: summernote.js', function () {
  41. const done = this.async();
  42. rollup.rollup(Object.assign(inputOptions, {
  43. input: this.data.input
  44. })).then((bundle) => {
  45. return bundle.write(Object.assign(outputOptions, {
  46. file: this.data.output
  47. }));
  48. }).then((result) => {
  49. done();
  50. }).catch((err) => {
  51. grunt.log.error(err);
  52. });
  53. });
  54. };