grunt.js 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116
  1. module.exports = function(grunt) {
  2. // Project configuration.
  3. grunt.initConfig({
  4. pkg: '<json:packages/lungo/component.json>',
  5. meta: {
  6. file: "lungo",
  7. // BETA
  8. endpoint: "example/components",
  9. version: ".brownie",
  10. // RELEASE
  11. // endpoint: "packages",
  12. // version: "",
  13. banner: '/* <%= pkg.name %> v<%= pkg.version %> - <%= grunt.template.today("yyyy/m/d") %>\n' +
  14. ' <%= pkg.homepage %>\n' +
  15. ' Copyright (c) <%= grunt.template.today("yyyy") %> <%= pkg.author.name %>' +
  16. ' - Licensed <%= _.pluck(pkg.license, "type").join(", ") %> */'
  17. },
  18. resources: {
  19. coffeescripts: ['src/**/*.coffee'],
  20. core: ['build/src/Lungo.js'],
  21. modules: [
  22. 'build/src/Lungo.js',
  23. 'build/src/modules/Lungo.Attributes.js',
  24. 'build/src/modules/Lungo.Cache.js',
  25. 'build/src/modules/Lungo.Constants.js',
  26. 'build/src/modules/Lungo.Core.js',
  27. 'build/src/modules/Lungo.Dom.js',
  28. 'build/src/modules/Lungo.Events.js',
  29. 'build/src/modules/Lungo.Fallback.js',
  30. 'build/src/modules/Lungo.Init.js',
  31. 'build/src/modules/Lungo.Notification.js',
  32. 'build/src/modules/Lungo.Resource.js',
  33. 'build/src/modules/Lungo.Scroll.js',
  34. 'build/src/modules/Lungo.Service.js',
  35. 'build/src/modules/Lungo.Router.js',
  36. 'build/src/modules/Lungo.Aside.js',
  37. 'build/src/modules/Lungo.Section.js',
  38. 'build/src/boot/*.js',
  39. 'build/src/element/*.js'],
  40. stylesheets: [
  41. 'src/**/lungo.base.styl',
  42. 'src/**/lungo.layout.styl',
  43. 'src/**/lungo.layout.*.styl',
  44. 'src/**/lungo.widgets.styl',
  45. 'src/**/lungo.widgets.*.styl',
  46. 'src/**/lungo.media.*.styl'],
  47. icons: ['src/**/lungo.icon**.styl'],
  48. themes: ['src/**/theme**.styl']
  49. },
  50. coffee: {
  51. lungo: {
  52. src: ['<config:resources.coffeescripts>'],
  53. dest: 'build',
  54. options: {
  55. bare: true,
  56. preserve_dirs: true
  57. }
  58. }
  59. },
  60. concat: {
  61. js: {
  62. src: ['<banner>', '<config:resources.core>', '<config:resources.modules>'],
  63. dest: 'build/<%=meta.file%>.js'
  64. }
  65. },
  66. min: {
  67. js: {
  68. src: ['<banner>', 'build/<%=meta.file%>.js'],
  69. dest: '<%=meta.endpoint%>/<%=meta.file%><%=meta.version%>/<%=meta.file%>.js'
  70. }
  71. },
  72. stylus: {
  73. stylesheets: {
  74. options: { compress: true, paths: ['src/stylesheets/import'] },
  75. files: { '<%=meta.endpoint%>/<%=meta.file%><%=meta.version%>/<%=meta.file%>.css': '<config:resources.stylesheets>' }
  76. },
  77. icons: {
  78. options: { compress: true },
  79. files: { '<%=meta.endpoint%>/<%=meta.file%><%=meta.version%>/**.css': '<config:resources.icons>' }
  80. },
  81. flatten: {
  82. options: { flatten: true },
  83. files: { '<%=meta.endpoint%>/<%=meta.file%><%=meta.version%>/**.css': '<config:resources.themes>' }
  84. }
  85. },
  86. copy: {
  87. example: {
  88. files: { 'example/components/<%=meta.file%>/': ['<%=meta.endpoint%>/<%=meta.file%>/*'] }
  89. },
  90. target: {
  91. files: { '<%=meta.endpoint%>/<%=meta.file%>.theme/': ['<config:resources.themes>'] }
  92. }
  93. },
  94. watch: {
  95. files: ['<config:resources.coffeescripts>', '<config:resources.stylesheets>', '<config:resources.themes>'],
  96. tasks: 'coffee concat min stylus'
  97. }
  98. });
  99. grunt.loadNpmTasks('grunt-coffee');
  100. grunt.loadNpmTasks('grunt-contrib-stylus');
  101. grunt.loadNpmTasks('grunt-contrib-copy');
  102. // Default task.
  103. grunt.registerTask('default', 'coffee concat min stylus copy');
  104. };