grunt.js 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  1. module.exports = function(grunt) {
  2. grunt.loadNpmTasks('grunt-shell');
  3. grunt.loadNpmTasks('grunt-image-embed');
  4. grunt.loadNpmTasks('grunt-contrib-mincss');
  5. grunt.registerTask('build:deploy', 'shell:compileDeploy concat:deploy min');
  6. grunt.registerTask('build:dev', 'shell:compileDev concat:css imageEmbed mincss css2js concat:dev');
  7. grunt.registerTask('default', 'build:deploy build:dev');
  8. grunt.initConfig({
  9. pkg: '<json:package.json>',
  10. meta: {
  11. banner: '/*! <%= pkg.title || pkg.name %> - v<%= pkg.version %> - <%= grunt.template.today("yyyy-mm-dd") %> */\n'
  12. },
  13. shell: {
  14. compileDeploy: {
  15. stdout: true,
  16. command: 'bin/amberc -l Kernel-Announcements ' +
  17. 'tmp/amber-compiled.deploy'
  18. },
  19. compileDev: {
  20. stdout: true,
  21. command: 'bin/amberc -l ' +
  22. 'Compiler-Exceptions,Compiler-Core,Compiler-AST,Compiler-Semantic,Compiler-IR,Compiler-Inlining,' +
  23. 'parser,Importer-Exporter,Kernel-Announcements,' +
  24. 'SUnit,Compiler-Tests,Kernel-Tests,' +
  25. 'Canvas,IDE,compat ' +
  26. 'tmp/amber-compiled'
  27. }
  28. },
  29. concat: {
  30. deploy: {
  31. src: ['tmp/amber-compiled.deploy.js'],
  32. dest: 'dist/amber-<%= pkg.version %>.deploy.js'
  33. },
  34. css: {
  35. src: [
  36. 'css/amber.css',
  37. 'js/lib/CodeMirror/codemirror.css',
  38. 'js/lib/CodeMirror/amber.css'
  39. ],
  40. dest: 'tmp/amber.css'
  41. },
  42. dev: {
  43. src: [
  44. 'js/lib/jQuery/jquery-ui-1.8.16.custom.min.js',
  45. 'js/lib/jQuery/jquery.textarea.js',
  46. 'js/lib/CodeMirror/codemirror.js',
  47. 'js/lib/CodeMirror/smalltalk.js',
  48. 'tmp/amber-compiled.js',
  49. 'tmp/css.js'
  50. ],
  51. dest: 'dist/amber-<%= pkg.version %>.js'
  52. }
  53. },
  54. imageEmbed: {
  55. dev: {
  56. src: ['tmp/amber.css'],
  57. dest: 'tmp/amber-images.css',
  58. options: {baseDir: 'public'}
  59. }
  60. },
  61. mincss: {
  62. dev: {
  63. src: ['tmp/amber-images.css'],
  64. dest: 'tmp/amber.min.css'
  65. }
  66. },
  67. css2js: {
  68. dev: {
  69. src: 'tmp/amber.min.css',
  70. dest: 'tmp/css.js'
  71. }
  72. },
  73. min: {
  74. deploy: {
  75. src: 'dist/amber-<%= pkg.version %>.deploy.js',
  76. dest: 'dist/amber-<%= pkg.version %>.deploy.min.js'
  77. }
  78. }
  79. });
  80. grunt.registerMultiTask('css2js', 'Embed CSS into JS', function() {
  81. var cssContent = grunt.task.directive(grunt.file.expandFiles(this.data.src)[0], grunt.file.read)
  82. var content =
  83. "var css='"+cssContent+"';" +
  84. "var cssTag = document.createElement('link');" +
  85. "document.head = document.head || document.getElementsByTagName('head')[0];" +
  86. "cssTag.href = 'data:text/css,'+css;" +
  87. "cssTag.rel = 'stylesheet';" +
  88. "document.head.appendChild(cssTag);";
  89. grunt.file.write(this.data.dest, content);
  90. grunt.log.writeln('File "' + this.data.dest + '" created.');
  91. });
  92. };