build-css.js 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. import sass from 'sass';
  2. import fs from 'fs/promises';
  3. import path from 'path';
  4. const name = 'splide';
  5. const files = [
  6. './src/css/core/index.scss',
  7. './src/css/themes/default/index.scss',
  8. './src/css/themes/sea-green/index.scss',
  9. './src/css/themes/skyblue/index.scss',
  10. ];
  11. async function buildScss( file ) {
  12. const result = await sass.compileAsync( file, { style: 'compressed' } );
  13. const outFile = rename( file );
  14. await fs.mkdir( './dist/css/themes', { recursive: true } );
  15. await fs.writeFile( outFile, result.css );
  16. if ( outFile.includes( 'splide-default' ) ) {
  17. const dir = path.dirname( outFile ).split( '/' ).slice( 0, -1 ).join( '/' );
  18. await fs.writeFile( `${ dir }/${ name }.min.css`, result.css );
  19. }
  20. }
  21. function rename( file ) {
  22. file = file.replace( './src/', '' );
  23. const fragments = path.dirname( file ).split( '/' );
  24. const dirname = fragments.slice( 0, -1 ).join( '/' );
  25. return `./dist/${ dirname }/${ name }-${ fragments[ fragments.length - 1 ] }.min.css`;
  26. }
  27. Promise.all( files.map( buildScss ) ).catch( e => console.error( e ) );
  28. export const buildCss = () => {
  29. files.forEach( buildScss );
  30. }