Gruntfile.js 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115
  1. /* global require, module */
  2. var path = require('path');
  3. module.exports = function(grunt) {
  4. 'use strict';
  5. // These plugins provide necessary tasks.
  6. /* [Build plugin & task ] ------------------------------------*/
  7. grunt.loadNpmTasks('grunt-module-dependence');
  8. grunt.loadNpmTasks('grunt-replace');
  9. grunt.loadNpmTasks('grunt-contrib-clean');
  10. grunt.loadNpmTasks('grunt-contrib-copy');
  11. grunt.loadNpmTasks('grunt-contrib-concat');
  12. grunt.loadNpmTasks('grunt-contrib-uglify');
  13. grunt.loadNpmTasks('grunt-browser-sync');
  14. grunt.loadNpmTasks('grunt-contrib-watch');
  15. var pkg = grunt.file.readJSON('package.json');
  16. var banner = '/*!\n' +
  17. ' * ====================================================\n' +
  18. ' * <%= pkg.title || pkg.name %> - v<%= pkg.version %> - ' +
  19. '<%= grunt.template.today("yyyy-mm-dd") %>\n' +
  20. '<%= pkg.homepage ? " * " + pkg.homepage + "\\n" : "" %>' +
  21. ' * GitHub: <%= pkg.repository.url %> \n' +
  22. ' * Copyright (c) <%= grunt.template.today("yyyy") %> <%= pkg.author.name %>;' +
  23. ' Licensed <%= _.pluck(pkg.licenses, "type").join(", ") %>\n' +
  24. ' * ====================================================\n' +
  25. ' */\n\n';
  26. var expose = '\nuse(\'expose-kityminder\');\n';
  27. // Project configuration.
  28. grunt.initConfig({
  29. // Metadata.
  30. pkg: pkg,
  31. clean: {
  32. last: 'dist'
  33. },
  34. // watch
  35. watch: {
  36. files: 'src/**',
  37. tasks: ['build']
  38. },
  39. // browser sync for dev
  40. browserSync: {
  41. bsFiles: {
  42. dist: 'dist/css/*.css',
  43. src: 'src/**'
  44. },
  45. options: {
  46. server: {
  47. baseDir: './',
  48. index: 'dev.html',
  49. watchTask: true
  50. }
  51. }
  52. },
  53. // resolve dependence
  54. dependence: {
  55. options: {
  56. base: 'src',
  57. entrance: 'expose-kityminder'
  58. },
  59. merge: {
  60. files: [{
  61. src: 'src/**/*.js',
  62. dest: 'dist/kityminder.core.js'
  63. }]
  64. }
  65. },
  66. // concat, just add closure
  67. concat: {
  68. options: {
  69. banner: banner + '(function () {\n',
  70. footer: expose + '})();'
  71. },
  72. build: {
  73. files: {
  74. 'dist/kityminder.core.js': ['dist/kityminder.core.js']
  75. }
  76. }
  77. },
  78. uglify: {
  79. options: {
  80. banner: banner
  81. },
  82. minimize: {
  83. src: 'dist/kityminder.core.js',
  84. dest: 'dist/kityminder.core.min.js'
  85. }
  86. },
  87. copy: {
  88. dist: {
  89. src: 'src/kityminder.css',
  90. dest: "dist/kityminder.core.css"
  91. }
  92. }
  93. });
  94. // Build task(s).
  95. grunt.registerTask('build', ['clean', 'dependence', 'concat:build', 'uglify:minimize', 'copy']);
  96. grunt.registerTask('dev', ['browserSync', 'watch']);
  97. };