Gruntfile.js 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130
  1. /*
  2. * @package RMW
  3. */
  4. module.exports = function(grunt) {
  5. var paths = {
  6. scripts: ['Gruntfile.js', 'app.js', 'lib/**/*.js', 'models/**/*.js', 'routes/**/*.js', 'form/**/*.js', 'resource/js/**/*.js'],
  7. styles: ['resource/css/*.scss'],
  8. all: []
  9. };
  10. Object.keys(paths).forEach(function(name) {
  11. paths[name].forEach(function(path) {
  12. paths.all[paths.all.length] = path;
  13. });
  14. });
  15. // Project configuration.
  16. grunt.initConfig({
  17. pkg: grunt.file.readJSON('package.json'),
  18. dirs: {
  19. js: 'resource/js',
  20. jsDest: 'public/js',
  21. css: 'resource/css',
  22. cssDest: 'public/css',
  23. web: 'public/'
  24. },
  25. sass: {
  26. dev: {
  27. options: {
  28. outputStyle: 'nested',
  29. includePaths: [
  30. 'bower_components/bootstrap-sass-official/assets/stylesheets',
  31. 'bower_components/fontawesome/scss',
  32. 'bower_components/reveal.js/css'
  33. ]
  34. },
  35. files: {
  36. '<%= dirs.cssDest %>/<%= pkg.name %>-main.css': '<%= dirs.css %>/<%= pkg.name %>.scss',
  37. '<%= dirs.cssDest %>/<%= pkg.name %>-reveal.css': '<%= dirs.css %>/<%= pkg.name %>-reveal.scss'
  38. }
  39. },
  40. default: {
  41. options: {
  42. outputStyle: 'compressed',
  43. includePaths: [
  44. 'bower_components/bootstrap-sass-official/assets/stylesheets',
  45. 'bower_components/fontawesome/scss',
  46. 'bower_components/reveal.js/css'
  47. ]
  48. },
  49. files: {
  50. '<%= dirs.cssDest %>/<%= pkg.name %>-main.min.css': '<%= dirs.css %>/<%= pkg.name %>.scss',
  51. '<%= dirs.cssDest %>/<%= pkg.name %>-reveal.min.css': '<%= dirs.css %>/<%= pkg.name %>-reveal.scss'
  52. }
  53. }
  54. },
  55. concat: {
  56. dist: {
  57. files: {
  58. '<%= dirs.cssDest %>/<%= pkg.name %>.css': [
  59. 'bower_components/highlightjs/styles/tomorrow-night.css',
  60. '<%= dirs.cssDest %>/<%= pkg.name %>-main.css',
  61. ],
  62. '<%= dirs.cssDest %>/<%= pkg.name %>.min.css': [
  63. 'bower_components/highlightjs/styles/tomorrow-night.css', // TODO minimize
  64. '<%= dirs.cssDest %>/<%= pkg.name %>-main.min.css',
  65. ],
  66. '<%= dirs.jsDest %>/<%= pkg.name %>.js': [
  67. 'bower_components/jquery/dist/jquery.js',
  68. 'bower_components/bootstrap-sass-official/assets/javascripts/bootstrap.js',
  69. 'node_modules/socket.io-client/dist/socket.io.js',
  70. 'bower_components/marked/lib/marked.js',
  71. 'bower_components/jquery.cookie/jquery.cookie.js',
  72. 'bower_components/highlightjs/highlight.pack.js',
  73. 'resource/js/crowi.js'
  74. ],
  75. '<%= dirs.jsDest %>/<%= pkg.name %>-reveal.js': [
  76. 'bower_components/jquery/dist/jquery.js',
  77. 'bower_components/reveal.js/lib/js/head.min.js',
  78. 'bower_components/reveal.js/lib/js/html5shiv.js',
  79. 'bower_components/reveal.js/js/reveal.js'
  80. ],
  81. }
  82. },
  83. },
  84. uglify: {
  85. build: {
  86. files: {
  87. '<%= dirs.jsDest %>/<%= pkg.name %>.min.js': '<%= dirs.jsDest %>/<%= pkg.name %>.js',
  88. '<%= dirs.jsDest %>/<%= pkg.name %>-reveal.min.js': '<%= dirs.jsDest %>/<%= pkg.name %>-reveal.js'
  89. }
  90. }
  91. },
  92. jshint: {
  93. options: {
  94. jshintrc: true
  95. },
  96. all: paths.scripts
  97. },
  98. watch: {
  99. css: {
  100. files: paths.styles,
  101. tasks: ['sass'],
  102. },
  103. dev: {
  104. files: paths.all,
  105. tasks: ['dev'],
  106. },
  107. default: {
  108. files: paths.all,
  109. tasks: ['default'],
  110. },
  111. },
  112. });
  113. grunt.loadNpmTasks('grunt-contrib-uglify');
  114. grunt.loadNpmTasks('grunt-contrib-watch');
  115. grunt.loadNpmTasks('grunt-contrib-concat');
  116. grunt.loadNpmTasks('grunt-contrib-jshint');
  117. grunt.loadNpmTasks('grunt-sass');
  118. // grunt watch dev
  119. grunt.registerTask('default', ['sass', 'concat', 'uglify']);
  120. grunt.registerTask('dev', ['sass:dev', 'concat', 'jshint']);
  121. };