Gruntfile.js 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152
  1. 'use strict';
  2. var _ = require('lodash-node');
  3. module.exports = function(grunt) {
  4. require('load-grunt-tasks')(grunt);
  5. require('time-grunt')(grunt);
  6. var tmp = '.tmp/';
  7. var preBuiltDest = tmp + 'build-prep';
  8. var builtDest = tmp + 'built';
  9. var templatesFile = preBuiltDest + '/formly-templates.js';
  10. var targetFilename = 'angular-formly-templates-bootstrap';
  11. var concatFile = builtDest + '/' + targetFilename + '.js';
  12. var uglifyFile = builtDest + '/' + targetFilename + '.min.js';
  13. var config = {
  14. pkg: grunt.file.readJSON('package.json'),
  15. formlyConfig: {
  16. base: 'src',
  17. dist: 'dist'
  18. },
  19. clean: {
  20. tmp: '.tmp/**/*',
  21. dist: 'dist/**/*'
  22. },
  23. jshint: {
  24. src: ['src/**/*.js']
  25. },
  26. mocha: {
  27. all: {
  28. src: ['tests/testrunner.html']
  29. },
  30. options: {
  31. run: true
  32. }
  33. },
  34. watch: {
  35. build: {
  36. files: ['<%= formlyConfig.base %>/**/*.{js,html}'],
  37. tasks: ['build']
  38. }
  39. },
  40. copy: {
  41. build: {
  42. files: [
  43. {
  44. expand: true,
  45. cwd: '<%= formlyConfig.base %>/',
  46. src: ['**/*.*', '!**/*Spec.js'],
  47. dest: preBuiltDest
  48. }
  49. ]
  50. },
  51. dist: {
  52. expand: true,
  53. cwd: '.tmp/',
  54. src: '**/built/**/*.*',
  55. dest: 'dist/',
  56. flatten: true,
  57. filter: 'isFile'
  58. }
  59. },
  60. ngtemplates: {
  61. default: {
  62. options: {
  63. module: 'formlyBootstrap',
  64. append: true,
  65. htmlmin: {
  66. collapseBooleanAttributes: true,
  67. collapseWhitespace: true,
  68. removeAttributeQuotes: true,
  69. removeComments: true,
  70. removeEmptyAttributes: true,
  71. removeRedundantAttributes: false,
  72. removeScriptTypeAttributes: true,
  73. removeStyleLinkTypeAttributes: true
  74. }
  75. },
  76. files: [
  77. {
  78. cwd: preBuiltDest + '/',
  79. src: ['fields/**/*.html', 'wrappers/**/*.html', 'other/**/*.html'],
  80. dest: templatesFile
  81. }
  82. ]
  83. }
  84. },
  85. concat: {
  86. default: {
  87. src: [
  88. preBuiltDest + '/modules/*.js',
  89. preBuiltDest + '/**/*.js'
  90. ],
  91. dest: concatFile
  92. }
  93. },
  94. ngAnnotate: {
  95. default: {
  96. src: concatFile,
  97. dest: concatFile
  98. }
  99. },
  100. uglify: {
  101. default: {
  102. src: concatFile,
  103. dest: uglifyFile,
  104. options: {
  105. mangle: true,
  106. sourceMap: true
  107. }
  108. }
  109. },
  110. umd: {
  111. all: {
  112. options: {
  113. src: concatFile,
  114. template: __dirname + '/umd.hbs',
  115. objectToExport: '"formlyBootstrap"',
  116. version: '<%= pkg.version %>',
  117. contributors: '<%= pkg.contributors.join(\', \') %>'
  118. }
  119. }
  120. }
  121. };
  122. // Pass config to grunt
  123. grunt.initConfig(config);
  124. grunt.registerTask('dev', [
  125. 'build',
  126. 'connect:dev',
  127. 'watch'
  128. ]);
  129. grunt.registerTask('build', [
  130. 'jshint',
  131. //'mocha',
  132. 'clean:tmp',
  133. 'copy:build',
  134. 'ngtemplates',
  135. 'concat',
  136. 'ngAnnotate',
  137. 'umd:all',
  138. 'uglify',
  139. 'clean:dist',
  140. 'copy:dist'
  141. ]);
  142. grunt.registerTask('default', ['build']);
  143. };