gulpfile.js 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  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', done => {
  48. js.forEach( path => {
  49. webpackStream( { config: require( path ) } )
  50. .pipe( rename( { suffix: '.min' } ) )
  51. .pipe( gulp.dest( './dist/js' ) );
  52. } );
  53. done();
  54. } );
  55. /*
  56. * Build sass files.
  57. */
  58. gulp.task( 'build:sass', done => {
  59. Object.values( css ).forEach( settings => {
  60. let stream = gulp.src( settings.path );
  61. if ( settings.merge ) {
  62. stream = merge( stream, gulp.src( settings.merge.path ) )
  63. .pipe( sass() )
  64. .pipe( concat( settings.merge.filename ) );
  65. }
  66. stream
  67. .pipe( sass() )
  68. .pipe( postcss( [
  69. cssnano( { reduceIdents: false } ),
  70. autoprefixer( { overrideBrowserslist: [ '> 5%' ] } )
  71. ] ) )
  72. .pipe( rename( { suffix: '.min' } ) )
  73. .pipe( gulp.dest( settings.dest ) );
  74. } );
  75. done();
  76. } );
  77. gulp.task( 'lint', () => {
  78. return gulp.src( [ './src/**/*.js', './tests/**/*.js' ] )
  79. .pipe( eslint( { useEslintrc: true } ) )
  80. .pipe( eslint.format() )
  81. .pipe( eslint.failAfterError() );
  82. } );