'use strict'; // check if gulp dist was called if (process.argv.indexOf('dist') !== -1) { // add ship options to command call process.argv.push('--ship'); } const path = require('path'); const gulp = require('gulp'); const build = require('@microsoft/sp-build-web'); const gulpSequence = require('gulp-sequence'); build.addSuppression(`Warning - [sass] The local CSS class 'ms-Grid' is not camelCase and will not be type-safe.`); var getTasks = build.rig.getTasks; build.rig.getTasks = function () { var result = getTasks.call(build.rig); result.set('serve', result.get('serve-deprecated')); return result; }; // Create clean distrubution package gulp.task('dist', gulpSequence('clean', 'bundle', 'package-solution')); // Create clean development package gulp.task('dev', gulpSequence('clean', 'bundle', 'package-solution')); /** * Webpack Bundle Anlayzer * Reference and gulp task */ const bundleAnalyzer = require('webpack-bundle-analyzer'); build.configureWebpack.mergeConfig({ additionalConfiguration: (generatedConfiguration) => { const lastDirName = path.basename(__dirname); const dropPath = path.join(__dirname, 'temp', 'stats'); generatedConfiguration.plugins.push(new bundleAnalyzer.BundleAnalyzerPlugin({ openAnalyzer: false, analyzerMode: 'static', reportFilename: path.join(dropPath, `${lastDirName}.stats.html`), generateStatsFile: true, statsFilename: path.join(dropPath, `${lastDirName}.stats.json`), logLevel: 'error' })); return generatedConfiguration; } }); /** * Custom Framework Specific gulp tasks */ build.initialize(gulp); build.sass.setConfig({ warnOnNonCSSModules: false, useCssModules:true}); /** * Continuous Integration */ const buildConfig = build.getConfig(); const karmaTaskCandidates = buildConfig.uniqueTasks.filter(task => task.name === 'karma'); if (karmaTaskCandidates && karmaTaskCandidates.length > 0) { const karmaTask = karmaTaskCandidates[0]; karmaTask.taskConfig.configPath = './config/karma.config.js'; }