packages/core/gulpfile.js (85 lines of code) (raw):

/** * Copyright (c) Facebook, Inc. and its affiliates. * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. */ 'use strict'; const cssnano = require('cssnano'); const del = require('del'); const gulp = require('gulp'); const rename = require('gulp-rename'); const postcss = require('gulp-postcss'); const rtlcss = require('gulp-rtlcss'); const postcssPresetInfima = require('postcss-preset-infima'); const webserver = require('gulp-webserver'); function transformStyles() { const modernPreset = postcssPresetInfima(); return gulp .src('./styles/themes/**/*.pcss') .pipe(postcss(modernPreset.plugins, {syntax: modernPreset.syntax})) .pipe(rename({extname: '.css'})) .pipe(gulp.dest('./dist/css')); } function createRtlStyles() { return gulp .src('./dist/css/**/*.css') .pipe(rtlcss()) .pipe(rename({suffix: '-rtl'})) .pipe(gulp.dest('./dist/css')); } function transformScripts() { // Only copy for now. In future run through Babel. return gulp.src('./js/**/*.js').pipe(gulp.dest('./dist/js')); } function minifyStyles() { return gulp .src('./dist/css/**/*[!.min].css') .pipe(rename({suffix: '.min'})) .pipe(postcss([cssnano()])) .pipe(gulp.dest('./dist/css')); } function minifyScripts() { return gulp .src('./dist/js/**/*[!.min].js') .pipe(rename({suffix: '.min'})) .pipe(gulp.dest('./dist/js')); } function copyStylesToDemo() { return gulp.src('./dist/css/**/*.css').pipe(gulp.dest('./demo/css')); } function copyScriptsToDemo() { return gulp.src('./dist/js/**/*.js').pipe(gulp.dest('./demo/js')); } function serve() { return gulp.src('./demo').pipe( webserver({ livereload: { enable: true, filter: () => true, }, open: true, }), ); } function clean() { return del(['./dist/**/*', './demo/css/**', './demo/js/**']); } const transformAssets = gulp.parallel( gulp.series(transformStyles, createRtlStyles), transformScripts, ); const copyAssetsToDemo = gulp.parallel(copyStylesToDemo, copyScriptsToDemo); const minifyAssets = gulp.parallel(minifyStyles, minifyScripts); const transformMinifyAndCopy = gulp.series( transformAssets, minifyAssets, copyAssetsToDemo, ); function watch(cb) { gulp.watch( ['./styles/**/*.pcss'], gulp.series(transformStyles, copyStylesToDemo), ); gulp.watch( ['./js/**/*.js'], gulp.series(transformScripts, copyScriptsToDemo), ); cb(); } exports.clean = clean; exports.build = gulp.series(clean, transformMinifyAndCopy); exports.default = gulp.series(clean, transformMinifyAndCopy, serve, watch);