1
0

grunt.js 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167
  1. module.exports = function(grunt) {
  2. grunt.loadTasks('./grunt/tasks');
  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.registerTask('default', 'amberc');
  9. grunt.initConfig({
  10. pkg: '<json:package.json>',
  11. meta: {
  12. banner: '/*! <%= pkg.title || pkg.name %> - v<%= pkg.version %> - <%= grunt.template.today("yyyy-mm-dd") %> */\n'
  13. },
  14. amberc: {
  15. _config: {
  16. amber_dir: process.cwd(),
  17. closure_jar: ''
  18. },
  19. amber_kernel: {
  20. working_dir: 'st',
  21. src: ['Kernel-Objects.st', 'Kernel-Classes.st', 'Kernel-Methods.st', 'Kernel-Collections.st',
  22. 'Kernel-Exceptions.st', 'Kernel-Transcript.st', 'Kernel-Announcements.st'],
  23. },
  24. amber_compiler: {
  25. working_dir: 'st',
  26. src: ['Compiler.st', 'Compiler-Exceptions.st', 'Compiler-Core.st', 'Compiler-AST.st',
  27. 'Compiler-IR.st', 'Compiler-Inlining.st', 'Compiler-Semantic.st']
  28. },
  29. amber_canvas: {
  30. working_dir: 'st',
  31. src: ['Canvas.st', 'SUnit.st']
  32. },
  33. amber_IDE: {
  34. working_dir: 'st',
  35. src: ['IDE.st', 'Documentation.st'],
  36. libraries: ['Canvas']
  37. },
  38. amber_tests: {
  39. working_dir: 'st',
  40. src: ['Kernel-Tests.st', 'Compiler-Tests.st'],
  41. libraries: ['SUnit']
  42. },
  43. amber_examples: {
  44. working_dir: 'st',
  45. src: ['Examples.st'],
  46. libraries: ['Canvas', 'IDE']
  47. },
  48. server: {
  49. working_dir: 'server',
  50. src: ['FileServer.st'],
  51. main_class: 'FileServer',
  52. output_name: 'server'
  53. },
  54. repl: {
  55. working_dir: 'repl',
  56. src: ['REPL.st'],
  57. main_class: 'Repl',
  58. output_name: 'amber'
  59. }
  60. },
  61. /*
  62. shell: {
  63. compileDeploy: {
  64. stdout: true,
  65. command: 'bin/amberc -l Kernel-Announcements ' +
  66. 'tmp/amber-compiled.deploy'
  67. },
  68. compileDev: {
  69. stdout: true,
  70. command: 'bin/amberc -l ' +
  71. 'Compiler-Exceptions,Compiler-Core,Compiler-AST,Compiler-Semantic,Compiler-IR,Compiler-Inlining,' +
  72. 'parser,Importer-Exporter,Kernel-Announcements,' +
  73. 'SUnit,Compiler-Tests,Kernel-Tests,' +
  74. 'Canvas,IDE,compat ' +
  75. 'tmp/amber-compiled'
  76. }
  77. },
  78. */
  79. lint: {
  80. amber: ['js/*.js'],
  81. server: ['server/*.js'],
  82. repl: ['repl/*.js'],
  83. tests: ['test/*.js'],
  84. grunt: ['grunt.js', 'grunt/**/*.js']
  85. },
  86. concat: {
  87. deploy: {
  88. src: ['tmp/amber-compiled.deploy.js'],
  89. dest: 'dist/amber-<%= pkg.version %>.deploy.js'
  90. },
  91. css: {
  92. src: [
  93. 'css/amber.css',
  94. 'js/lib/CodeMirror/codemirror.css',
  95. 'js/lib/CodeMirror/amber.css'
  96. ],
  97. dest: 'tmp/amber.css'
  98. },
  99. dev: {
  100. src: [
  101. 'js/lib/jQuery/jquery-ui-1.8.16.custom.min.js',
  102. 'js/lib/jQuery/jquery.textarea.js',
  103. 'js/lib/CodeMirror/codemirror.js',
  104. 'js/lib/CodeMirror/smalltalk.js',
  105. 'tmp/amber-compiled.js',
  106. 'tmp/css.js'
  107. ],
  108. dest: 'dist/amber-<%= pkg.version %>.js'
  109. }
  110. },
  111. imageEmbed: {
  112. dev: {
  113. src: ['tmp/amber.css'],
  114. dest: 'tmp/amber-images.css',
  115. options: {baseDir: 'public'}
  116. }
  117. },
  118. mincss: {
  119. dev: {
  120. src: ['tmp/amber-images.css'],
  121. dest: 'tmp/amber.min.css'
  122. }
  123. },
  124. css2js: {
  125. dev: {
  126. src: 'tmp/amber.min.css',
  127. dest: 'tmp/css.js'
  128. }
  129. },
  130. min: {
  131. deploy: {
  132. src: 'dist/amber-<%= pkg.version %>.deploy.js',
  133. dest: 'dist/amber-<%= pkg.version %>.deploy.min.js'
  134. }
  135. }
  136. });
  137. grunt.registerMultiTask('css2js', 'Embed CSS into JS', function() {
  138. var cssContent = grunt.task.directive(grunt.file.expandFiles(this.data.src)[0], grunt.file.read);
  139. var content =
  140. "var css='"+cssContent+"';" +
  141. "var cssTag = document.createElement('link');" +
  142. "document.head = document.head || document.getElementsByTagName('head')[0];" +
  143. "cssTag.href = 'data:text/css,'+css;" +
  144. "cssTag.rel = 'stylesheet';" +
  145. "document.head.appendChild(cssTag);";
  146. grunt.file.write(this.data.dest, content);
  147. grunt.log.writeln('File "' + this.data.dest + '" created.');
  148. });
  149. };