Gruntfile.js 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145
  1. // 包装函数
  2. module.exports = function(grunt) {
  3. // 任务配置,所有插件的配置信息
  4. grunt.initConfig({
  5. //获取 package.json 的信息
  6. pkg: grunt.file.readJSON('package.json'),
  7. // uglify插件的配置信息
  8. uglify: {
  9. options: {
  10. stripBanners: true,
  11. banner: '/*! <%=pkg.name%>.js <%= grunt.template.today("yyyy-mm-dd") %> */\n'
  12. },
  13. build: {
  14. src: 'src/js/<%=pkg.name%>.js',
  15. dest: 'dist/js/<%=pkg.name%>.min.js'
  16. }
  17. },
  18. //less插件的配置信息
  19. less: {
  20. editor: {
  21. src: 'src/css/<%=pkg.name%>.less',
  22. dest: 'src/css/<%=pkg.name%>.css'
  23. }
  24. },
  25. //cssmin插件的配置信息
  26. cssmin: {
  27. options: {
  28. stripBanners: true,
  29. banner: '/*! <%=pkg.name%>.css <%= grunt.template.today("yyyy-mm-dd") %> */\n'
  30. },
  31. build: {
  32. src: 'src/css/<%=pkg.name%>.css',
  33. dest: 'dist/css/<%=pkg.name%>.min.css'
  34. }
  35. },
  36. //jshint插件的配置信息'
  37. jshint:{
  38. build: [ 'Gruntfile.js', 'src/js/*.js' ],
  39. options: {
  40. jshintrc: '.jshintrc'
  41. }
  42. },
  43. //concat插件的配置信息
  44. concat: {
  45. css:{
  46. src: 'src/css/parts/*.less',
  47. dest: 'src/css/<%=pkg.name%>.less'
  48. },
  49. js:{
  50. src: 'src/js/parts/*.js',
  51. dest: 'src/js/<%=pkg.name%>.js'
  52. }
  53. },
  54. //copy插件的配置信息
  55. copy: {
  56. main: {
  57. files:[
  58. //js
  59. {
  60. expand: true,
  61. flatten: true,
  62. src: ['src/js/*.js'],
  63. dest: 'dist/js/',
  64. filter: 'isFile'
  65. },
  66. //less
  67. {
  68. expand: true,
  69. flatten: true,
  70. src: ['src/css/*.less'],
  71. dest: 'dist/css/',
  72. filter: 'isFile'
  73. },
  74. //css
  75. {
  76. expand: true,
  77. flatten: true,
  78. src: ['src/css/*.css'],
  79. dest: 'dist/css/',
  80. filter: 'isFile'
  81. }
  82. ]
  83. }
  84. },
  85. // watch插件的配置信息
  86. watch: {
  87. js: {
  88. files: [
  89. 'src/js/parts/*.js'
  90. ],
  91. tasks: [
  92. 'concat',
  93. 'jshint',
  94. 'uglify',
  95. 'copy'
  96. ],
  97. options: { spawn: false}
  98. },
  99. css:{
  100. files: [
  101. 'src/css/parts/*.less'
  102. ],
  103. tasks: [
  104. 'concat',
  105. 'less',
  106. 'cssmin',
  107. 'copy'
  108. ],
  109. options: { spawn: false}
  110. }
  111. }
  112. });
  113. // 告诉grunt我们将使用插件
  114. grunt.loadNpmTasks('grunt-contrib-uglify');
  115. grunt.loadNpmTasks('grunt-contrib-less');
  116. grunt.loadNpmTasks('grunt-contrib-concat');
  117. grunt.loadNpmTasks('grunt-contrib-jshint');
  118. grunt.loadNpmTasks('grunt-contrib-cssmin');
  119. grunt.loadNpmTasks('grunt-contrib-copy');
  120. grunt.loadNpmTasks('grunt-contrib-watch');
  121. // 告诉grunt当我们在终端中输入grunt时需要做些什么(注意先后顺序)
  122. grunt.registerTask('default', [
  123. //注意下面注册任务时的前后顺序
  124. 'concat',
  125. 'less',
  126. 'jshint',
  127. 'uglify',
  128. 'cssmin',
  129. 'copy',
  130. 'watch'
  131. ]);
  132. };