cupertino-pane
Version:
Cupertino Panes is multi-functional modals, cards & panes with touch technologies.
68 lines (57 loc) • 1.87 kB
JavaScript
/* 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 env = process.env.NODE_ENV;
const buildBundle = require('./build-bundle.js');
const buildCore = require('./build-core.js');
const buildModules = require('./build-modules.js');
// js bundle
gulp.task('js', (cb) => {
buildBundle(cb);
if (env === 'production') {
buildCore(cb);
buildModules(cb);
}
return gulp
.src('./src/**/*.ts')
.pipe(connect.reload());
});
// 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, '../dist/');
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', 'prod-source-sourcemap-fix-paths']));
gulp.task('watch', () => {
gulp.watch('./src/**/**/*.ts', gulp.series('js'));
});
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'));