94 lines
2.5 KiB
JavaScript
94 lines
2.5 KiB
JavaScript
|
'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.`);
|
||
|
|
||
|
// 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;
|
||
|
}
|
||
|
|
||
|
});
|
||
|
|
||
|
|
||
|
/**
|
||
|
* StyleLinter configuration
|
||
|
* Reference and custom gulp task
|
||
|
*/
|
||
|
const stylelint = require('gulp-stylelint');
|
||
|
|
||
|
/* Stylelinter sub task */
|
||
|
let styleLintSubTask = build.subTask('stylelint', (gulp) => {
|
||
|
|
||
|
console.log('[stylelint]: By default style lint errors will not break your build. If you want to change this behaviour, modify failAfterError parameter in gulpfile.js.');
|
||
|
|
||
|
return gulp
|
||
|
.src('src/**/*.scss')
|
||
|
.pipe(stylelint({
|
||
|
failAfterError: false,
|
||
|
reporters: [{
|
||
|
formatter: 'string',
|
||
|
console: true
|
||
|
}]
|
||
|
}));
|
||
|
});
|
||
|
/* end sub task */
|
||
|
|
||
|
build.rig.addPreBuildTask(styleLintSubTask);
|
||
|
|
||
|
/**
|
||
|
* Custom Framework Specific gulp tasks
|
||
|
*/
|
||
|
|
||
|
|
||
|
build.initialize(gulp);
|
||
|
|
||
|
/**
|
||
|
* 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';
|
||
|
}
|
||
|
|