build-css.js 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. const { src, dest } = require( 'gulp' );
  2. const sass = require( 'gulp-dart-sass' );
  3. const postcss = require( 'gulp-postcss' );
  4. const cssnano = require( 'cssnano' );
  5. const autoprefixer = require( 'autoprefixer' );
  6. const rename = require( 'gulp-rename' );
  7. const through = require( 'through2' );
  8. const fs = require( 'fs' );
  9. const path = require( 'path' );
  10. function buildCss() {
  11. return src( [
  12. './src/css/core/index.scss',
  13. './src/css/themes/default/index.scss',
  14. './src/css/themes/sea-green/index.scss',
  15. './src/css/themes/skyblue/index.scss',
  16. ], { base: 'src' } )
  17. .pipe( sass() )
  18. .pipe( postcss( [
  19. cssnano( { reduceIdents: false } ),
  20. autoprefixer(),
  21. ] ) )
  22. .pipe( rename( path => {
  23. const fragments = path.dirname.split( '\\' );
  24. const dirname = fragments.slice( 0, -1 ).join( '\\' );
  25. return {
  26. dirname,
  27. basename: `splide-${ fragments[ fragments.length - 1 ] }.min`,
  28. extname : '.css',
  29. };
  30. } ) )
  31. .pipe( dest( 'dist' ) )
  32. .pipe( copy() );
  33. }
  34. function copy() {
  35. return through( { objectMode: true }, ( file, encoding, cb ) => {
  36. if ( file.path.includes( 'splide-default' ) ) {
  37. const result = path.parse( file.path );
  38. const fragments = result.dir.split( '\\' );
  39. const dirname = fragments.slice( 0, -1 ).join( '\\' );
  40. fs.copyFile( file.path, `${ dirname }\\splide.min.css`, error => {
  41. if ( error ) {
  42. throw error;
  43. }
  44. } );
  45. }
  46. cb( null, file );
  47. } );
  48. }
  49. exports.buildCss = buildCss;