You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

320 lines
6.9 KiB

1 year ago
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
  1. /**
  2. * Owl Carousel
  3. *
  4. * Bartosz Wojciechowski
  5. *
  6. * Copyright (c) 2014
  7. * Licensed under the MIT license.
  8. */
  9. module.exports = function(grunt) {
  10. require('load-grunt-tasks')(grunt);
  11. grunt
  12. .initConfig({
  13. pkg: grunt.file.readJSON('package.json'),
  14. app: grunt.file.readJSON('_config.json'),
  15. banner: '/**\n' + ' * Owl Carousel v<%= pkg.version %>\n'
  16. + ' * Copyright 2013-<%= grunt.template.today("yyyy") %> <%= pkg.author.name %>\n'
  17. + ' * Licensed under: <%= pkg.license %>\n' + ' */\n',
  18. // assemble
  19. assemble: {
  20. options: {
  21. flatten: false,
  22. expand: true,
  23. production: false,
  24. assets: '<%= app.docs.dest %>/assets',
  25. postprocess: require('pretty'),
  26. // metadata
  27. pkg: '<%= pkg %>',
  28. app: '<%= app %>',
  29. data: [ '<%= app.docs.src %>/data/*.{json,yml}' ],
  30. // templates
  31. partials: '<%= app.docs.templates %>/partials/*.hbs',
  32. layoutdir: '<%= app.docs.layouts %>/',
  33. // extensions
  34. helpers: '<%= app.docs.src %>/helpers/*.js'
  35. },
  36. index: {
  37. options: {
  38. layout: 'home.hbs'
  39. },
  40. files: [ {
  41. expand: true,
  42. cwd: '<%= app.docs.pages %>/',
  43. src: '*.hbs',
  44. dest: '<%= app.docs.dest %>/'
  45. } ]
  46. },
  47. demos: {
  48. options: {
  49. layout: 'demos.hbs'
  50. },
  51. files: [ {
  52. expand: true,
  53. cwd: '<%= app.docs.pages %>/demos/',
  54. src: '*.hbs',
  55. dest: '<%= app.docs.dest %>/demos'
  56. } ]
  57. },
  58. docs: {
  59. options: {
  60. layout: 'docs.hbs'
  61. },
  62. files: [ {
  63. expand: true,
  64. cwd: '<%= app.docs.pages %>/docs/',
  65. src: '*.hbs',
  66. dest: '<%= app.docs.dest %>/docs'
  67. } ]
  68. }
  69. },
  70. // clean
  71. clean: {
  72. docs: [ '<%= app.docs.dest %>' ],
  73. dist: [ 'dist' ]
  74. },
  75. // sass
  76. sass: {
  77. docs: {
  78. options: {
  79. outputStyle: 'compressed',
  80. includePaths: [ '<%= app.docs.src %>/assets/scss/', 'node_modules/foundation-sites/scss' ]
  81. },
  82. files: {
  83. '<%= app.docs.dest %>/assets/css/docs.theme.min.css': '<%= app.docs.src %>/assets/scss/docs.theme.scss'
  84. }
  85. },
  86. dist: {
  87. options: {
  88. outputStyle: 'nested'
  89. },
  90. files: {
  91. 'dist/assets/<%= pkg.name %>.css': 'src/scss/<%= pkg.name %>.scss',
  92. 'dist/assets/owl.theme.default.css': 'src/scss/owl.theme.default.scss',
  93. 'dist/assets/owl.theme.green.css': 'src/scss/owl.theme.green.scss'
  94. }
  95. }
  96. },
  97. autoprefixer: {
  98. options: {
  99. browsers: [ 'last 2 versions', 'ie 7', 'ie 8', 'ie 9', 'ie 10', 'ie 11' ]
  100. },
  101. dist: {
  102. files: {
  103. 'dist/assets/<%= pkg.name %>.css': 'dist/assets/<%= pkg.name %>.css',
  104. 'dist/assets/owl.theme.default.css': 'dist/assets/owl.theme.default.css',
  105. 'dist/assets/owl.theme.green.css': 'dist/assets/owl.theme.green.css'
  106. }
  107. }
  108. },
  109. concat: {
  110. dist: {
  111. files: {
  112. 'dist/<%= pkg.name %>.js': '<%= app.src.scripts %>'
  113. }
  114. }
  115. },
  116. cssmin: {
  117. dist: {
  118. files: {
  119. 'dist/assets/<%= pkg.name %>.min.css': 'dist/assets/<%= pkg.name %>.css',
  120. 'dist/assets/owl.theme.default.min.css': 'dist/assets/owl.theme.default.css',
  121. 'dist/assets/owl.theme.green.min.css': 'dist/assets/owl.theme.green.css'
  122. }
  123. }
  124. },
  125. jshint: {
  126. options: {
  127. jshintrc: 'src/js/.jshintrc'
  128. },
  129. dist: {
  130. src: [ '<%= app.src.scripts %>', 'Gruntfile.js' ]
  131. }
  132. },
  133. qunit: {
  134. options: {
  135. timeout: 10000
  136. },
  137. dist: [ 'test/index.html' ]
  138. },
  139. jscs: {
  140. options: {
  141. config: 'src/js/.jscsrc',
  142. reporter: 'text.js',
  143. reporterOutput: 'jscs.report.txt'
  144. },
  145. dist: {
  146. src: [ '<%= app.src.scripts %>', 'Gruntfile.js' ]
  147. }
  148. },
  149. usebanner: {
  150. dist: {
  151. options: {
  152. banner: '<%= banner %>',
  153. linebreak: false
  154. },
  155. files: {
  156. src: [
  157. 'dist/<%= pkg.name %>.js',
  158. 'dist/assets/*.css'
  159. ]
  160. }
  161. }
  162. },
  163. uglify: {
  164. options: {
  165. banner: '<%= banner %>'
  166. },
  167. dist: {
  168. files: {
  169. 'dist/<%= pkg.name %>.min.js': 'dist/<%= pkg.name %>.js'
  170. }
  171. }
  172. },
  173. // copy
  174. copy: {
  175. distImages: {
  176. expand: true,
  177. flatten: true,
  178. cwd: 'src/',
  179. src: [ 'img/*.*' ],
  180. dest: 'dist/assets'
  181. },
  182. distToDocs: {
  183. expand: true,
  184. cwd: 'dist/',
  185. src: [ '**/*.*' ],
  186. dest: '<%= app.docs.dest %>/assets/owlcarousel'
  187. },
  188. srcToDocs: {
  189. expand: true,
  190. cwd: 'src/js',
  191. src: [ '**/*.js' ],
  192. dest: '<%= app.docs.dest %>/assets/owlcarousel/src'
  193. },
  194. docsAssets: {
  195. expand: true,
  196. cwd: '<%= app.docs.src %>/assets/',
  197. src: [ 'css/*.css', 'vendors/*.js', 'vendors/*.map', 'img/*.*', 'js/*.*' ],
  198. dest: '<%= app.docs.dest %>/assets/'
  199. },
  200. readme: {
  201. files: [ {
  202. 'dist/LICENSE': 'LICENSE',
  203. 'dist/README.md': 'README.md'
  204. } ]
  205. }
  206. },
  207. // connect
  208. connect: {
  209. options: {
  210. port: 9600,
  211. open: true,
  212. livereload: true,
  213. hostname: 'localhost'
  214. },
  215. docs: {
  216. options: {
  217. base: "<%= app.docs.dest %>"
  218. }
  219. }
  220. },
  221. // watch
  222. watch: {
  223. options: {
  224. livereload: true
  225. },
  226. templatesDocs: {
  227. files: [ '<%= app.docs.templates %>/**/*.hbs' ],
  228. tasks: [ 'assemble' ]
  229. },
  230. sassDocs: {
  231. files: [ '<%= app.docs.src %>/assets/**/*.scss' ],
  232. tasks: [ 'sass:docs' ]
  233. },
  234. sass: {
  235. files: [ 'src/**/*.scss' ],
  236. tasks: [ 'sass:dist', 'cssmin:dist', 'usebanner:dist', 'copy:distToDocs' ]
  237. },
  238. jsDocs: {
  239. files: [ '<%= app.docs.src %>/assets/**/*.js' ],
  240. tasks: [ 'copy:docsAssets' ]
  241. },
  242. js: {
  243. files: [ 'src/**/*.js' ],
  244. tasks: [ 'jscs:dist', 'jshint:dist', 'qunit:dist', 'concat:dist', 'uglify:dist', 'usebanner:dist', 'copy:distToDocs', 'copy:srcToDocs' ]
  245. },
  246. helpersDocs: {
  247. files: [ '<%= app.docs.src %>/helpers/*.js' ],
  248. tasks: [ 'assemble' ]
  249. },
  250. test: {
  251. files: [ 'test/*.html', 'test/unit/*.js' ],
  252. tasks: [ 'qunit:dist' ]
  253. }
  254. },
  255. // compress zip
  256. compress: {
  257. zip: {
  258. options: {
  259. archive: 'docs/download/owl.carousel.<%= pkg.version %>.zip'
  260. },
  261. files: [ {
  262. expand: true,
  263. cwd: 'dist/',
  264. src: [ '**' ],
  265. dest: 'owl.carousel.<%= pkg.version %>'
  266. } ]
  267. }
  268. },
  269. // publish to github pages
  270. 'gh-pages': {
  271. options: {
  272. base: 'docs'
  273. },
  274. src: '**/*'
  275. }
  276. });
  277. grunt.loadNpmTasks('assemble');
  278. // tasks
  279. grunt.registerTask('dist', [ 'clean:dist', 'sass:dist', 'autoprefixer', 'concat:dist', 'cssmin:dist', 'copy:distImages', 'usebanner:dist', 'uglify:dist', 'copy:readme' ]);
  280. grunt.registerTask('docs', [ 'dist', 'clean:docs', 'assemble', 'sass:docs', 'copy:docsAssets', 'copy:distToDocs', 'zip' ]);
  281. grunt.registerTask('test', [ 'jshint:dist', 'qunit:dist', 'jscs:dist' ]);
  282. grunt.registerTask('default', [ 'dist', 'docs', 'test' ]);
  283. grunt.registerTask('serve', [ 'connect:docs', 'watch' ]);
  284. grunt.registerTask('zip', [ 'compress' ]);
  285. grunt.registerTask('deploy', [ 'docs', 'gh-pages' ]);
  286. };