grunt.js 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129
  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. server: {
  20. working_dir: 'server',
  21. src: ['FileServer.st'],
  22. main_class: 'FileServer',
  23. output_name: 'server'
  24. },
  25. repl: {
  26. working_dir: 'repl',
  27. src: ['REPL.st'],
  28. main_class: 'Repl',
  29. output_name: 'amber'
  30. }
  31. },
  32. /*
  33. shell: {
  34. compileDeploy: {
  35. stdout: true,
  36. command: 'bin/amberc -l Kernel-Announcements ' +
  37. 'tmp/amber-compiled.deploy'
  38. },
  39. compileDev: {
  40. stdout: true,
  41. command: 'bin/amberc -l ' +
  42. 'Compiler-Exceptions,Compiler-Core,Compiler-AST,Compiler-Semantic,Compiler-IR,Compiler-Inlining,' +
  43. 'parser,Importer-Exporter,Kernel-Announcements,' +
  44. 'SUnit,Compiler-Tests,Kernel-Tests,' +
  45. 'Canvas,IDE,compat ' +
  46. 'tmp/amber-compiled'
  47. }
  48. },
  49. */
  50. concat: {
  51. deploy: {
  52. src: ['tmp/amber-compiled.deploy.js'],
  53. dest: 'dist/amber-<%= pkg.version %>.deploy.js'
  54. },
  55. css: {
  56. src: [
  57. 'css/amber.css',
  58. 'js/lib/CodeMirror/codemirror.css',
  59. 'js/lib/CodeMirror/amber.css'
  60. ],
  61. dest: 'tmp/amber.css'
  62. },
  63. dev: {
  64. src: [
  65. 'js/lib/jQuery/jquery-ui-1.8.16.custom.min.js',
  66. 'js/lib/jQuery/jquery.textarea.js',
  67. 'js/lib/CodeMirror/codemirror.js',
  68. 'js/lib/CodeMirror/smalltalk.js',
  69. 'tmp/amber-compiled.js',
  70. 'tmp/css.js'
  71. ],
  72. dest: 'dist/amber-<%= pkg.version %>.js'
  73. }
  74. },
  75. imageEmbed: {
  76. dev: {
  77. src: ['tmp/amber.css'],
  78. dest: 'tmp/amber-images.css',
  79. options: {baseDir: 'public'}
  80. }
  81. },
  82. mincss: {
  83. dev: {
  84. src: ['tmp/amber-images.css'],
  85. dest: 'tmp/amber.min.css'
  86. }
  87. },
  88. css2js: {
  89. dev: {
  90. src: 'tmp/amber.min.css',
  91. dest: 'tmp/css.js'
  92. }
  93. },
  94. min: {
  95. deploy: {
  96. src: 'dist/amber-<%= pkg.version %>.deploy.js',
  97. dest: 'dist/amber-<%= pkg.version %>.deploy.min.js'
  98. }
  99. }
  100. });
  101. grunt.registerMultiTask('css2js', 'Embed CSS into JS', function() {
  102. var cssContent = grunt.task.directive(grunt.file.expandFiles(this.data.src)[0], grunt.file.read)
  103. var content =
  104. "var css='"+cssContent+"';" +
  105. "var cssTag = document.createElement('link');" +
  106. "document.head = document.head || document.getElementsByTagName('head')[0];" +
  107. "cssTag.href = 'data:text/css,'+css;" +
  108. "cssTag.rel = 'stylesheet';" +
  109. "document.head.appendChild(cssTag);";
  110. grunt.file.write(this.data.dest, content);
  111. grunt.log.writeln('File "' + this.data.dest + '" created.');
  112. });
  113. };