Gruntfile.js 8.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240
  1. /**
  2. * Created by fy on 15-9-13.
  3. */
  4. 'use strict';
  5. const fs = require('fs');
  6. const db = require('./config/db');
  7. module.exports = function (grunt) {
  8. grunt.initConfig({
  9. pkg: grunt.file.readJSON('package.json'),
  10. babel: {
  11. options: {
  12. sourceMap: false,
  13. experimental: true
  14. },
  15. dist: {
  16. files: {
  17. 'test/es7-test.js': 'test/es7-test.es7.js'
  18. }
  19. }
  20. },
  21. watch: {
  22. /*scripts: {
  23. files: ['test/es7-test.es7.js'],
  24. tasks: ['babel'],
  25. options: {
  26. spawn: false
  27. }
  28. },*/
  29. scripts: {
  30. files: ["**/**/fragment/*.jade"],
  31. tasks: ['jade', 'includeTemplateScript'],
  32. options: {
  33. spawn: false
  34. }
  35. }/*,
  36. live: {
  37. files: '**!/!*',
  38. options: {
  39. livereload: true /!*35729*!/
  40. }
  41. }*/
  42. },
  43. jade: {
  44. node: {
  45. src: ["**/**/fragment/*.jade"],
  46. dest: 'public/javascripts/fragment',
  47. options: {
  48. client: true,
  49. compileDebug: false
  50. }
  51. }
  52. },
  53. uglify: {
  54. my_client: {
  55. files: [{
  56. expand: true,
  57. cwd: 'public/',
  58. src: ['**/*.js', '!**/*.min.js'],
  59. dest: '../dest/lrs/public'
  60. }]
  61. },
  62. my_server: {
  63. files: {
  64. '../dest/lrs/config/db.js': ['config/db.js'],
  65. '../dest/lrs/lib/date/index.js': ['lib/date/index.js'],
  66. '../dest/lrs/lib/pager/select-pager.js': ['lib/pager/select-pager.js'],
  67. '../dest/lrs/lib/pdf/index.js': ['lib/pdf/index.js'],
  68. '../dest/lrs/lib/pinyin/index.js': ['lib/pinyin/index.js'],
  69. '../dest/lrs/lib/utils.js': ['lib/utils.js'],
  70. //'../dest/lrs/lib/myfs/digui.js': ['lib/myfs/digui.js'],
  71. '../dest/lrs/routes/book/category.js': ['routes/book/category.js'],
  72. '../dest/lrs/routes/book/pdf.js': ['routes/book/pdf.js'],
  73. '../dest/lrs/routes/user/index.js': ['routes/user/index.js'],
  74. '../dest/lrs/routes/import/index.js': ['routes/import/index.js'],
  75. '../dest/lrs/routes/about.js': ['routes/about.js'],
  76. '../dest/lrs/routes/index.js': ['routes/index.js'],
  77. '../dest/lrs/service/api/service.js': ['service/api/service.js'],
  78. '../dest/lrs/service/book/category.js': ['service/book/category.js'],
  79. '../dest/lrs/service/book/pdf.js': ['service/book/pdf.js'],
  80. '../dest/lrs/service/user/index.js': ['service/user/index.js'],
  81. //'../dest/lrs/service/import/index.js': ['service/import/index.js'],
  82. '../dest/lrs/app.js': ['app.js']
  83. }
  84. }
  85. },
  86. cssmin: {
  87. files: {
  88. expand: true,
  89. cwd: 'public',
  90. src: ['**/*.css', '!**/*.min.css'],
  91. dest: '../dest/lrs/public'
  92. //ext: '.css'
  93. }
  94. },
  95. copy: {
  96. my_erweima: {
  97. flatten: true,
  98. src: 'public/erweima/shu.png',
  99. dest: '../dest/lrs/'
  100. },
  101. my_pdf_img: {
  102. flatten: true,
  103. src: 'public/files/**/*.txt',
  104. dest: '../dest/lrs/'
  105. },
  106. my_sql: {
  107. flatten: true,
  108. src: 'config/init-db.sql',
  109. dest: '../dest/lrs/'
  110. },
  111. my_img: {
  112. flatten: true,
  113. src: 'public/assets/images/*',
  114. dest: '../dest/lrs/'
  115. },
  116. my_package: {
  117. flatten: true,
  118. src: 'package.json',
  119. dest: '../dest/lrs/package.json'
  120. },
  121. my_rpc: {
  122. flatten: true,
  123. src: 'lib/rpc/**/*',
  124. dest: '../dest/lrs/'
  125. },
  126. my_views: {
  127. flatten: true,
  128. src: 'views/**/*',
  129. dest: '../dest/lrs/'
  130. },
  131. my_css: {
  132. flatten: true,
  133. src: 'public/**/*.min.css',
  134. dest: '../dest/lrs/'
  135. },
  136. my_js: {
  137. flatten: true,
  138. src: 'public/**/*.min.js',
  139. dest: '../dest/lrs/'
  140. },
  141. my_unzip: {
  142. flatten: true,
  143. src: 'lib/unzip/**/*',
  144. dest: '../dest/lrs/'
  145. },
  146. // fixme 这个地方可能有问题
  147. //my_node_modules: {
  148. // flatten: true,
  149. // src: 'node_modules/**/*',
  150. // dest: '../dest/lrs/'
  151. //},
  152. my_font: {
  153. flatten: true,
  154. src: 'public/**/font/*',
  155. dest: '../dest/lrs/'
  156. },
  157. my_main: {
  158. flatten: true,
  159. src: 'index',
  160. dest: '../dest/lrs/index'
  161. },
  162. my_digui: {
  163. flatten: true,
  164. src: 'lib/myfs/digui.js',
  165. dest: '../dest/lrs/'
  166. },
  167. my_import: {
  168. flatten: true,
  169. src: 'service/import/index.js',
  170. dest: '../dest/lrs/'
  171. },
  172. my_excel: {
  173. flatten: true,
  174. src: 'public/excel/用户导入模板.xlsx',
  175. dest: '../dest/lrs/'
  176. },
  177. my_zip: {
  178. flatten: true,
  179. src: 'public/zip/zip-upload-template.zip',
  180. dest: '../dest/lrs/'
  181. }
  182. }
  183. });
  184. //require('load-grunt-tasks')(grunt);
  185. //grunt.loadNpmTasks('grunt-babel');
  186. grunt.loadNpmTasks('grunt-contrib-watch');
  187. grunt.loadNpmTasks('grunt-contrib-uglify');
  188. grunt.loadNpmTasks('grunt-contrib-cssmin');
  189. grunt.loadNpmTasks('grunt-contrib-copy');
  190. grunt.loadNpmTasks('grunt-jade-runtime');
  191. //grunt.registerTask('my-babel-watch', 'watch');
  192. grunt.registerTask('default', ['cssmin', 'uglify', 'copy']);
  193. grunt.registerTask('watch', ['jade', 'watch']);
  194. grunt.registerTask('includeTemplateScript', '自动生成模板导入script', function () {
  195. var scriptFolder = '/javascripts/fragment';
  196. var path = [__dirname, '/public', scriptFolder].join('');
  197. var files = fs.readdirSync(path);
  198. fs.writeFileSync(__dirname + '/views/include/template.jade', files.filter(function (item) {
  199. return item.toString().indexOf('runtime.js') == -1; //排除jade模板运行时
  200. }).map(function (item) {
  201. return ['script(src="', scriptFolder, '/', item, '")\n'].join('');
  202. }).join(''));
  203. });
  204. //
  205. // grunt.registerTask('genForm', '生成form表单', function () {
  206. //
  207. // let sql = `SELECT t.COLUMN_NAME as cn, t.COLUMN_COMMENT as cc, t.COLUMN_TYPE as ct
  208. // FROM information_schema.COLUMNS t
  209. // WHERE t.TABLE_NAME = 'dna_flow'`;
  210. //
  211. // db.pool.query(sql, function (err, result) {
  212. // for (let idx in result) {
  213. // let row = result[idx];
  214. //
  215. // let input = ` .form-group
  216. // label.col-sm-3.control-label.no-padding-right(for='ff-${idx}') ${row.cc}
  217. // .col-sm-9
  218. // input#ff-${idx}.col-sm-6(type='text', name='${row.cn}', value='#{${row.cn}||""}', placeholder='')
  219. // span.help-inline.col-xs-12.col-sm-6
  220. // span.middle.hide Inline help text
  221. // .space-4`;
  222. // print(input)
  223. // console.error(input);
  224. // }
  225. //
  226. // });
  227. //
  228. // });
  229. };