gulpfile.js 2.3 KB

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