123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119 |
- import gulp from 'gulp';
- import config from '../config';
- import eslint from 'gulp-eslint';
- import gulpif from 'gulp-if';
- import size from 'gulp-size';
- import plumber from 'gulp-plumber';
- import uglifyjs from 'uglify-js';
- import composer from 'gulp-uglify/composer';
- import gutil from 'gulp-util';
- import notify from 'gulp-notify';
- import notifier from 'node-notifier';
- import babel from 'gulp-babel';
- import handleErrors from './utils/handleErrors';
- import rollup from 'gulp-rollup';
- import header from 'gulp-header';
- import Glob from 'glob-fs';
- import path from 'path';
- import del from 'del';
- // SCRIPTS
- // ------------------
- gulp.task('lint:scripts', () => {
- return gulp
- .src(`${config.scripts.source}/**/*.js`, {
- base: './',
- since: gulp.lastRun('lint:scripts'),
- })
- .pipe(eslint({fix: true})) // see http://eslint.org/docs/rules/
- .pipe(eslint.format())
- .pipe(gulp.dest('.'));
- });
- gulp.task('make:scripts', (done) => {
- const uglify = composer(uglifyjs, console);
- const glob = Glob();
- const files = glob.readdirSync(path.join(config.scripts.source, '**/*.js'));
- const globals = {
- jquery: 'jQuery',
- Component: 'Component',
- Plugin: 'Plugin',
- Config: 'Config',
- GridMenu: "SectionGridMenu",
- Menubar: "SectionMenubar",
- PageAside: "SectionPageAside",
- Sidebar: "SectionSidebar"
- };
- const external = Object.keys(globals);
- return gulp
- .src(`${config.scripts.source}/**/*.js`)
- .on('error', handleErrors)
- .pipe(
- plumber({
- errorHandler: notify.onError('Error: <%= error.message %>'),
- })
- )
- .pipe(rollup({
- input: files,
- // rollup: require('rollup'),
- allowRealFiles: true,
- output: {
- globals: globals,
- format: 'es'
- },
- external: external,
- }))
- .pipe(babel({
- babelrc: false,
- presets: [
- [
- '@babel/preset-env'
- ]
- ],
- moduleRoot: '',
- moduleIds: true,
- plugins: [
- ["@babel/plugin-transform-modules-umd", {
- "globals": globals
- }],
- "@babel/plugin-proposal-object-rest-spread",
- "@babel/plugin-proposal-class-properties",
- "@babel/plugin-external-helpers"
- ]
- }))
- .pipe(gulpif(config.production, uglify()))
- .pipe(gulpif(config.production, header(config.banner)))
- .pipe(size({gzip: true, showFiles: true}))
- .pipe(gulp.dest(`${config.scripts.build}`));
- });
- gulp.task(
- 'scripts',
- gulp.series('lint:scripts', 'make:scripts', (done) => {
- if (config.enable.notify) {
- notifier.notify({
- title: config.notify.title,
- message: 'Scripts task complete',
- });
- }
- done();
- })
- );
- // Clean scripts files
- gulp.task('clean:scripts', (done) => {
- return del([`${config.scripts.build}/**/*`]).then(() => {
- if (config.enable.notify) {
- notifier.notify({
- title: config.notify.title,
- message: 'Clean scripts task complete',
- });
- }
- done();
- });
- });
|