gulpfile.js 2.2 KB

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