'use strict'; const webpack = require('webpack'); const path = require('path'); const nodeExternals = require('webpack-node-externals'); const UglifyJsPlugin = require('uglifyjs-webpack-plugin') module.exports = function(env, argv) { if (env === undefined) { env = {}; } const minify = !!env.production; const sourceMaps = !env.production; const plugins = [ new webpack.optimize.ModuleConcatenationPlugin(), new UglifyJsPlugin({ parallel: true, sourceMap: sourceMaps, uglifyOptions: { ecma: 8, compress: minify ? {} : false, mangle: minify, output: { beautify: !minify, comments: false }, sourceMap: sourceMaps, } }) ]; return { entry: './src/extension.ts', target: 'node', output: { libraryTarget: 'commonjs2', filename: 'extension.js', path: path.resolve(__dirname, 'out') }, resolve: { extensions: ['.ts'] }, externals: [ nodeExternals() ], devtool: sourceMaps ? 'inline-source-map' : false, module: { rules: [ { test: /\.ts$/, use: [{ loader: 'ts-loader' }], exclude: /node_modules/ } ] }, plugins: plugins }; };