Gruntfile.js 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103
  1. module.exports = function( grunt ) {
  2. grunt.initConfig({
  3. component_build: {
  4. dev: {
  5. output: './dist/',
  6. name: 'seed',
  7. dev: true,
  8. sourceUrls: true,
  9. styles: false,
  10. verbose: true
  11. },
  12. build: {
  13. output: './dist/',
  14. name: 'seed',
  15. styles: false
  16. }
  17. },
  18. jshint: {
  19. build: {
  20. src: ['src/**/*.js'],
  21. options: {
  22. jshintrc: "./.jshintrc"
  23. }
  24. }
  25. },
  26. mocha: {
  27. build: {
  28. src: ['test/test.html'],
  29. options: {
  30. reporter: 'Spec',
  31. run: true
  32. }
  33. }
  34. },
  35. uglify: {
  36. build: {
  37. options: {
  38. compress: true,
  39. mangle: true
  40. },
  41. files: {
  42. 'dist/seed.min.js': 'dist/seed.js'
  43. }
  44. }
  45. },
  46. watch: {
  47. options: {
  48. livereload: true
  49. },
  50. component: {
  51. files: ['src/**/*.js', 'component.json'],
  52. tasks: ['component_build:dev', 'concat:dev']
  53. }
  54. }
  55. })
  56. grunt.loadNpmTasks( 'grunt-contrib-watch' )
  57. grunt.loadNpmTasks( 'grunt-contrib-jshint' )
  58. grunt.loadNpmTasks( 'grunt-contrib-uglify' )
  59. grunt.loadNpmTasks( 'grunt-component-build' )
  60. grunt.loadNpmTasks( 'grunt-mocha' )
  61. grunt.registerTask( 'test', ['mocha'] )
  62. grunt.registerTask( 'default', ['jshint', 'component_build:build'] )
  63. grunt.registerTask( 'concat', function (version) {
  64. var fs = require('fs'),
  65. intro = fs.readFileSync('wrappers/intro.js'),
  66. outro = fs.readFileSync('wrappers/outro.js', 'utf-8'),
  67. main = fs.readFileSync('dist/seed.js')
  68. outro = new Buffer(outro.replace('{{version}}', "'" + version + "'"))
  69. var all = Buffer.concat([intro, main, outro])
  70. fs.writeFileSync('dist/seed.js', all)
  71. })
  72. grunt.registerTask( 'version', function (version) {
  73. var fs = require('fs')
  74. ;['package', 'bower', 'component'].forEach(function (file) {
  75. file = './' + file + '.json'
  76. var json = fs.readFileSync(file, 'utf-8')
  77. json = json.replace(/"version"\s*:\s*"(.+?)"/, '"version": "' + version + '"')
  78. fs.writeFileSync(file, json)
  79. })
  80. })
  81. grunt.registerTask( 'release', function (version) {
  82. grunt.task.run([
  83. 'jshint',
  84. 'component_build:build',
  85. 'concat:' + version,
  86. //'test',
  87. 'uglify',
  88. 'version:' + version
  89. ])
  90. })
  91. }