text: 'use strict';
  
  const gulp = require('gulp');
  const build = require('@microsoft/sp-build-web');
  build.addSuppression(`Warning - [sass] The local CSS class 'ms-Grid' is not camelCase and will not be type-safe.`);
  const webpack = require('webpack');
  const path = require('path');
  const UglifyJSPlugin = require('uglifyjs-webpack-plugin');
  const bundleAnalyzer = require('webpack-bundle-analyzer');
  
  //************START: Added to handle Template file url ************/
  
  var inlineNgxTemplate = require('gulp-inline-ngx-template');
  var ts = require('gulp-typescript');
  var tsProject = ts.createProject('./tsconfig.json');
  
  let tsInlines = build.subTask('tsInlines', function(gulp, buildOptions, done) {
    return  gulp.src('src/webparts/helloAngularTemplate/app/**/*.ts')
         .pipe(inlineNgxTemplate({ base: '/src/webparts/helloAngularTemplate/app/', useRelativePaths: true }))
         .pipe(tsProject())
         .pipe(gulp.dest('lib/webparts/helloAngularTemplate/app'));
  })
  
  build.rig.addPostTypescriptTask(tsInlines);
  
  //************END: Added to handle Template file url ************/
  
  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'
      }));
  
      generatedConfiguration.plugins.push(new webpack.ContextReplacementPlugin(/\@angular(\\|\/)core(\\|\/)fesm5/, path.join(__dirname, './client')));
  
      for (let i = 0; i < generatedConfiguration.plugins.length; i++) {
        const p = generatedConfiguration.plugins[i];
        if (p.options && p.options.mangle) {
          generatedConfiguration.plugins.splice(i, 1, new UglifyJSPlugin({ uglifyOptions: { mangle: true } }));
          break;
        }
      }
  
      return generatedConfiguration;
    }
  });
  
  build.initialize(gulp);
  