You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
87 lines
2.6 KiB
87 lines
2.6 KiB
/* eslint no-console: ["error", { allow: ["log"] }] */
|
|
const gulp = require('gulp');
|
|
const connect = require('gulp-connect');
|
|
const gopen = require('gulp-open');
|
|
const fs = require('fs');
|
|
const path = require('path');
|
|
|
|
const buildJs = require('./build-js.js');
|
|
const buildStyles = require('./build-styles.js');
|
|
|
|
// Tasks
|
|
gulp.task('playground', (cb) => {
|
|
const env = process.env.NODE_ENV || 'development';
|
|
let content = fs.readFileSync(path.resolve(__dirname, '../playground/index.html'), 'utf8');
|
|
if (env === 'development') {
|
|
content = content
|
|
.replace('../package/css/swiper.min.css', '../build/css/swiper.css')
|
|
.replace('../package/js/swiper.min.js', '../build/js/swiper.js');
|
|
} else {
|
|
content = content
|
|
.replace('../build/css/swiper.css', '../package/css/swiper.min.css')
|
|
.replace('../build/js/swiper.js', '../package/js/swiper.min.js');
|
|
}
|
|
fs.writeFileSync(path.resolve(__dirname, '../playground/index.html'), content);
|
|
if (cb) cb();
|
|
});
|
|
gulp.task('js', (cb) => {
|
|
buildJs(cb);
|
|
});
|
|
|
|
gulp.task('styles', (cb) => {
|
|
buildStyles(cb);
|
|
});
|
|
|
|
|
|
// in prod builds, copy /src folder into /package
|
|
gulp.task('prod-source-copy', (cb) => {
|
|
const env = process.env.NODE_ENV || 'development';
|
|
if (env === 'production') {
|
|
gulp.src(['./src/**/*']).pipe(gulp.dest('./package/src/'));
|
|
}
|
|
if (cb) cb();
|
|
});
|
|
|
|
// in prod builds, adjust sourcemap paths to actual src location
|
|
gulp.task('prod-source-sourcemap-fix-paths', (cb) => {
|
|
const env = process.env.NODE_ENV || 'development';
|
|
if (env === 'production') {
|
|
const jsDir = path.resolve(__dirname, '../package/js/');
|
|
const mapFiles = fs
|
|
.readdirSync(jsDir)
|
|
.filter((file) => file.toLowerCase().endsWith('.map'));
|
|
mapFiles.forEach((mapFile) => {
|
|
const mapFilePath = path.resolve(jsDir, mapFile);
|
|
let content = fs.readFileSync(mapFilePath, 'utf8');
|
|
content = content
|
|
.replace(/"\.\.\/\.\.\//g, '"../')
|
|
.replace(/"\.\.\/node_modules\//g, '"~/');
|
|
fs.writeFileSync(mapFilePath, content);
|
|
});
|
|
}
|
|
if (cb) cb();
|
|
});
|
|
|
|
gulp.task('build', gulp.series(['js', 'styles', 'prod-source-copy', 'prod-source-sourcemap-fix-paths']));
|
|
|
|
gulp.task('watch', () => {
|
|
gulp.watch('./src/**/**/*.js', gulp.series('js'));
|
|
gulp.watch('./src/**/**/*.less', gulp.series('styles'));
|
|
});
|
|
|
|
gulp.task('connect', () => {
|
|
connect.server({
|
|
root: ['./'],
|
|
livereload: true,
|
|
host: '0.0.0.0',
|
|
port: '3000',
|
|
});
|
|
});
|
|
|
|
gulp.task('open', () => {
|
|
gulp.src('./playground/index.html').pipe(gopen({ uri: 'http://localhost:3000/playground/' }));
|
|
});
|
|
|
|
gulp.task('server', gulp.parallel(['watch', 'connect', 'open']));
|
|
|
|
gulp.task('default', gulp.series('server'));
|
|
|