Gruntfile.coffee 7.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268
  1. module.exports = (grunt) ->
  2. grunt.initConfig
  3. pkg: grunt.file.readJSON 'package.json'
  4. coffee:
  5. simditor:
  6. options:
  7. join: true
  8. bare: true
  9. files:
  10. 'lib/simditor.js': [
  11. 'src/selection.coffee'
  12. 'src/formatter.coffee'
  13. 'src/inputManager.coffee'
  14. 'src/keystroke.coffee'
  15. 'src/undoManager.coffee'
  16. 'src/util.coffee'
  17. 'src/toolbar.coffee'
  18. 'src/indentation.coffee'
  19. 'src/clipboard.coffee'
  20. 'src/core.coffee'
  21. 'src/i18n.coffee'
  22. 'src/buttons/button.coffee'
  23. 'src/buttons/popover.coffee'
  24. 'src/buttons/title.coffee'
  25. 'src/buttons/font-scale.coffee'
  26. 'src/buttons/bold.coffee'
  27. 'src/buttons/italic.coffee'
  28. 'src/buttons/underline.coffee'
  29. 'src/buttons/color.coffee'
  30. 'src/buttons/list.coffee'
  31. 'src/buttons/blockquote.coffee'
  32. 'src/buttons/code.coffee'
  33. 'src/buttons/link.coffee'
  34. 'src/buttons/image.coffee'
  35. 'src/buttons/indent.coffee'
  36. 'src/buttons/outdent.coffee'
  37. 'src/buttons/hr.coffee'
  38. 'src/buttons/table.coffee'
  39. 'src/buttons/strikethrough.coffee'
  40. 'src/buttons/alignment.coffee'
  41. ]
  42. site:
  43. expand: true
  44. flatten: true
  45. src: 'site/assets/_coffee/*.coffee'
  46. dest: 'site/assets/scripts/'
  47. ext: '.js'
  48. moduleSpec:
  49. expand: true
  50. flatten: true
  51. src: 'spec/src/*.coffee'
  52. dest: 'spec/'
  53. ext: '.js'
  54. buttonSpec:
  55. expand: true
  56. flatten: true
  57. src: 'spec/src/buttons/*.coffee'
  58. dest: 'spec/buttons/'
  59. ext: '.js'
  60. sass:
  61. simditor:
  62. options:
  63. style: 'expanded'
  64. bundleExec: true
  65. sourcemap: 'none'
  66. files:
  67. 'styles/simditor.css': 'styles/simditor.scss'
  68. site:
  69. options:
  70. style: 'expanded'
  71. bundleExec: true
  72. sourcemap: 'none'
  73. files:
  74. 'site/assets/styles/app.css': 'site/assets/_sass/app.scss'
  75. 'site/assets/styles/mobile.css': 'site/assets/_sass/mobile.scss'
  76. umd:
  77. all:
  78. src: 'lib/simditor.js'
  79. template: 'umd.hbs'
  80. amdModuleId: 'simditor'
  81. objectToExport: 'Simditor'
  82. globalAlias: 'Simditor'
  83. deps:
  84. 'default': ['$', 'SimpleModule', 'simpleHotkeys', 'simpleUploader']
  85. amd: ['jquery', 'simple-module', 'simple-hotkeys', 'simple-uploader']
  86. cjs: ['jquery', 'simple-module', 'simple-hotkeys', 'simple-uploader']
  87. global:
  88. items: ['jQuery', 'SimpleModule', 'simple.hotkeys', 'simple.uploader']
  89. prefix: ''
  90. suffix: ''
  91. copy:
  92. vendor:
  93. files: [{
  94. src: 'vendor/bower/jquery/dist/jquery.min.js',
  95. dest: 'site/assets/scripts/jquery.min.js'
  96. }]
  97. styles:
  98. files: [{
  99. src: 'styles/simditor.css',
  100. dest: 'site/assets/styles/simditor.css'
  101. }]
  102. scripts:
  103. files: [{
  104. src: 'vendor/bower/simple-module/lib/module.js',
  105. dest: 'site/assets/scripts/module.js'
  106. }, {
  107. src: 'vendor/bower/simple-uploader/lib/uploader.js',
  108. dest: 'site/assets/scripts/uploader.js'
  109. }, {
  110. src: 'vendor/bower/simple-hotkeys/lib/hotkeys.js',
  111. dest: 'site/assets/scripts/hotkeys.js'
  112. }, {
  113. src: 'lib/simditor.js',
  114. dest: 'site/assets/scripts/simditor.js'
  115. }]
  116. package:
  117. files: [{
  118. expand: true,
  119. flatten: true
  120. src: 'lib/*',
  121. dest: 'package/scripts/'
  122. }, {
  123. src: 'vendor/bower/jquery/dist/jquery.min.js',
  124. dest: 'package/scripts/jquery.min.js'
  125. }, {
  126. src: 'vendor/bower/simple-module/lib/module.js',
  127. dest: 'package/scripts/module.js'
  128. }, {
  129. src: 'vendor/bower/simple-uploader/lib/uploader.js',
  130. dest: 'package/scripts/uploader.js'
  131. }, {
  132. src: 'vendor/bower/simple-hotkeys/lib/hotkeys.js',
  133. dest: 'package/scripts/hotkeys.js'
  134. }, {
  135. expand: true,
  136. flatten: true
  137. src: 'styles/*',
  138. dest: 'package/styles/'
  139. }, {
  140. src: 'site/assets/images/image.png',
  141. dest: 'package/images/image.png'
  142. }]
  143. watch:
  144. styles:
  145. files: ['styles/*.scss']
  146. tasks: ['sass:simditor', 'copy:styles', 'jekyll']
  147. scripts:
  148. files: ['src/*.coffee', 'src/buttons/*.coffee']
  149. tasks: ['coffee:simditor', 'umd', 'copy:scripts', 'jekyll']
  150. siteStyles:
  151. files: ['site/assets/_sass/*.scss']
  152. tasks: ['sass:site', 'jekyll']
  153. siteScripts:
  154. files: ['site/assets/_coffee/*.coffee']
  155. tasks: ['coffee:site', 'jekyll']
  156. jekyll:
  157. files: ['site/**/*.html', 'site/**/*.md', 'site/**/*.yml']
  158. tasks: ['jekyll']
  159. moduleSpec:
  160. files: ['spec/src/*.coffee']
  161. tasks: ['coffee:moduleSpec']
  162. buttonSpec:
  163. files: ['spec/src/buttons/*.coffee']
  164. tasks: ['coffee:buttonSpec']
  165. jekyll:
  166. site:
  167. options:
  168. bundleExec: true
  169. config: 'jekyll.yml'
  170. express:
  171. server:
  172. options:
  173. server: 'server.js'
  174. bases: '_site'
  175. uglify:
  176. simditor:
  177. options:
  178. preserveComments: 'some'
  179. files:
  180. 'package/scripts/module.min.js': 'package/scripts/module.js'
  181. 'package/scripts/uploader.min.js': 'package/scripts/uploader.js'
  182. 'package/scripts/hotkeys.min.js': 'package/scripts/hotkeys.js'
  183. 'package/scripts/simditor.min.js': 'package/scripts/simditor.js'
  184. usebanner:
  185. simditor:
  186. options:
  187. banner: '''/*!
  188. * Simditor v<%= pkg.version %>
  189. * http://simditor.tower.im/
  190. * <%= grunt.template.today("yyyy-mm-dd") %>
  191. */'''
  192. files:
  193. src: ['lib/simditor.js', 'styles/simditor.css']
  194. compress:
  195. package:
  196. options:
  197. archive: 'package/simditor-<%= pkg.version %>.zip'
  198. files: [{
  199. expand: true,
  200. cwd: 'package/'
  201. src: '**',
  202. dest: 'simditor-<%= pkg.version %>/'
  203. }]
  204. clean:
  205. package:
  206. src: ['package/']
  207. jasmine:
  208. test:
  209. src: ['lib/**/*.js']
  210. options:
  211. outfile: 'spec/index.html'
  212. styles: [
  213. 'styles/simditor.css'
  214. ]
  215. specs: [
  216. 'spec/*.js'
  217. 'spec/buttons/*.js'
  218. ]
  219. vendor: [
  220. 'vendor/bower/jquery/dist/jquery.min.js'
  221. 'vendor/bower/simple-module/lib/module.js'
  222. 'vendor/bower/simple-uploader/lib/uploader.js'
  223. 'vendor/bower/simple-hotkeys/lib/hotkeys.js'
  224. ]
  225. curl:
  226. fonticons:
  227. src: "http://use.fonticons.com/kits/d7611efe/d7611efe.css"
  228. dest: "styles/fonticon.scss"
  229. grunt.loadNpmTasks 'grunt-contrib-sass'
  230. grunt.loadNpmTasks 'grunt-contrib-coffee'
  231. grunt.loadNpmTasks 'grunt-contrib-watch'
  232. grunt.loadNpmTasks 'grunt-contrib-copy'
  233. grunt.loadNpmTasks 'grunt-contrib-uglify'
  234. grunt.loadNpmTasks 'grunt-contrib-compress'
  235. grunt.loadNpmTasks 'grunt-contrib-clean'
  236. grunt.loadNpmTasks 'grunt-umd'
  237. grunt.loadNpmTasks 'grunt-express'
  238. grunt.loadNpmTasks 'grunt-jekyll'
  239. grunt.loadNpmTasks 'grunt-contrib-jasmine'
  240. grunt.loadNpmTasks 'grunt-banner'
  241. grunt.loadNpmTasks 'grunt-curl'
  242. grunt.registerTask 'default', ['site', 'express', 'watch']
  243. grunt.registerTask 'site', ['sass', 'coffee', 'umd', 'copy:vendor', 'copy:scripts', 'copy:styles', 'usebanner', 'jekyll']
  244. grunt.registerTask 'test', ['coffee:moduleSpec', 'coffee:buttonSpec', 'jasmine']
  245. grunt.registerTask 'package', ['clean:package', 'copy:package', 'uglify:simditor', 'compress']
  246. grunt.registerTask 'fonticons', ['curl']