gulpfile.js 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. 'use strict';
  2. /*
  3. * Dependencies.
  4. */
  5. const gulp = require( 'gulp' );
  6. const rename = require( 'gulp-rename' );
  7. const sass = require( 'gulp-sass' );
  8. const postcss = require( 'gulp-postcss' );
  9. const autoprefixer = require( 'autoprefixer' );
  10. const cssnano = require( 'cssnano' );
  11. const merge = require( 'merge-stream' );
  12. const concat = require( 'gulp-concat' );
  13. const webpackStream = require( 'webpack-stream' );
  14. const eslint = require( 'gulp-eslint' );
  15. /*
  16. * Webpack config paths.
  17. */
  18. const js = [
  19. './build/complete/config',
  20. ];
  21. /*
  22. * Path definitions.
  23. */
  24. const css = {
  25. all: {
  26. path : './src/sass/core/*.scss',
  27. dest : './dist/css',
  28. merge: {
  29. filename: 'splide.css',
  30. path : './src/sass/themes/default/*.scss',
  31. },
  32. },
  33. core: {
  34. path: './src/sass/core/*.scss',
  35. dest: './dist/css',
  36. },
  37. themes: {
  38. path: [
  39. './src/sass/themes/default/*.scss',
  40. ],
  41. dest: './dist/css/themes',
  42. },
  43. };
  44. /*
  45. * Build a script file.
  46. */
  47. gulp.task( 'build:js', () => {
  48. js.forEach( path => {
  49. return webpackStream( { config: require( path ) } )
  50. .pipe( rename( { suffix: '.min' } ) )
  51. .pipe( gulp.dest( './dist/js' ) );
  52. } );
  53. } );
  54. /*
  55. * Build sass files.
  56. */
  57. gulp.task( 'build:sass', () => {
  58. Object.values( css ).forEach( settings => {
  59. let stream = gulp.src( settings.path );
  60. if ( settings.merge ) {
  61. stream = merge( stream, gulp.src( settings.merge.path ) )
  62. .pipe( sass() )
  63. .pipe( concat( settings.merge.filename ) );
  64. }
  65. stream
  66. .pipe( sass() )
  67. .pipe( postcss( [
  68. cssnano( { reduceIdents: false } ),
  69. autoprefixer( { browsers: [ '> 5%' ] } )
  70. ] ) )
  71. .pipe( rename( { suffix: '.min' } ) )
  72. .pipe( gulp.dest( settings.dest ) );
  73. } );
  74. } );
  75. gulp.task( 'lint', () => {
  76. return gulp.src( [ './src/**/*.js', './tests/**/*.js' ] )
  77. .pipe( eslint( { useEslintrc: true } ) )
  78. .pipe( eslint.format() )
  79. .pipe( eslint.failAfterError() );
  80. } );