gulpfile.js 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  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. core: {
  26. path: './src/sass/core/splide-core.scss',
  27. dest: './dist/css',
  28. },
  29. theme: {
  30. path: './src/sass/theme/splide-theme.scss',
  31. dest: './dist/css',
  32. },
  33. };
  34. /*
  35. * Build a script file.
  36. */
  37. gulp.task( 'build:js', () => {
  38. js.forEach( path => {
  39. return webpackStream( { config: require( path ) } )
  40. .pipe( rename( { suffix: '.min' } ) )
  41. .pipe( gulp.dest( './dist/js' ) );
  42. } );
  43. } );
  44. /*
  45. * Build sass files.
  46. */
  47. gulp.task( 'build:sass', () => {
  48. let mergedStream;
  49. Object.values( css ).forEach( settings => {
  50. const stream = gulp.src( settings.path )
  51. .pipe( sass() )
  52. .pipe( postcss( [
  53. cssnano( { reduceIdents: false } ),
  54. autoprefixer( { browsers: [ '> 5%' ] } )
  55. ] ) )
  56. .pipe( rename( { suffix: '.min' } ) )
  57. .pipe( gulp.dest( settings.dest ) );
  58. mergedStream = ! mergedStream ? stream : merge( mergedStream, stream );
  59. } );
  60. if ( mergedStream ) {
  61. mergedStream
  62. .pipe( concat( 'splide.min.css' ) )
  63. .pipe( postcss( [ cssnano( { reduceIdents: false } ) ] ) )
  64. .pipe( gulp.dest( './dist/css' ) );
  65. }
  66. } );
  67. gulp.task( 'lint', () => {
  68. return gulp.src( [ './src/**/*.js', './tests/**/*.js' ] )
  69. .pipe( eslint( { useEslintrc: true } ) )
  70. .pipe( eslint.format() )
  71. .pipe( eslint.failAfterError() );
  72. } );