aboutsummaryrefslogtreecommitdiffstats
path: root/webpack.config.js
diff options
context:
space:
mode:
Diffstat (limited to 'webpack.config.js')
-rw-r--r--webpack.config.js125
1 files changed, 125 insertions, 0 deletions
diff --git a/webpack.config.js b/webpack.config.js
new file mode 100644
index 0000000..16a3f83
--- /dev/null
+++ b/webpack.config.js
@@ -0,0 +1,125 @@
+const path = require('path');
+const UglifyJsPlugin = require('uglifyjs-webpack-plugin');
+const CleanWebpackPlugin = require('clean-webpack-plugin');
+const HtmlWebpackPlugin = require('html-webpack-plugin');
+const MiniCSSExtractPlugin = require('mini-css-extract-plugin');
+const CopyPlugin = require('copy-webpack-plugin');
+const ZipPlugin = require('zip-webpack-plugin');
+
+
+module.exports = {
+ mode: 'production',
+ entry: {
+ index: './src/index.js'
+ },
+ output: {
+ path: __dirname + '/dist',
+ filename: '[name].js',
+ libraryTarget: 'var',
+ // `library` determines the name of the global variable
+ library: '[name]'
+ },
+ optimization: {
+ minimizer: [new UglifyJsPlugin()],
+ },
+ plugins: [
+ new CleanWebpackPlugin(['dist']),
+ new CopyPlugin([
+ {
+ from: 'src/icon.*',
+ flatten: true
+ },
+ {
+ from: 'src/config.xml',
+ flatten: true
+ },
+ {
+ from: 'src/mockups/*',
+ to: 'mockups/',
+ flatten: true
+ },
+ {
+ from: 'src/images/*',
+ to: 'images/',
+ flatten: true
+ },
+ {
+ from: 'src/templates/*',
+ to: 'templates/',
+ flatten: true
+ }
+ ]),
+ new HtmlWebpackPlugin({
+ template: 'src/index.html',
+ filename: 'index.html',
+ inject: 'body'
+ }),
+ new MiniCSSExtractPlugin({
+ filename: 'app.css',
+ path: __dirname + '/dist'
+ }),
+ new ZipPlugin({
+ path: __dirname + '/package',
+ filename: 'dashboard',
+ extension: 'wgt',
+ exclude: []
+ })
+ ],
+ module: {
+ rules: [
+ {
+ test: /\.css$/,
+ use: [
+ 'style-loader',
+ 'css-loader'
+ ]
+ },
+ {
+ test: /\.scss$/,
+ use: [
+ MiniCSSExtractPlugin.loader,
+ "css-loader",
+ {
+ loader: 'sass-loader',
+ options: {
+ sassOptions: {
+ indentWidth: 4,
+ includePaths: ['./src', './node_modules'],
+ },
+ },
+ },
+ ]
+ },
+ {
+ test: /\.(woff(2)?|ttf|eot|svg)(\?v=\d+\.\d+\.\d+)?$/,
+ use: [
+ {
+ loader: 'file-loader',
+ options: {
+ name: '[name].[ext]',
+ outputPath: 'fonts/'
+ }
+ }
+ ]
+ },
+ {
+ test: /\.(gif|png|jpe?g|svg)$/i,
+ use: [
+ 'file-loader',
+ {
+ loader: "image-webpack-loader",
+ options: {
+ bypassOnDebug: true, // webpack@1.x
+ disable: true, // webpack@2.x and newer
+ },
+ }
+ ]
+ }
+ ]
+ },
+ devServer: {
+ contentBase: path.join(__dirname, 'dist'),
+ compress: true,
+ port: 9000
+ }
+};  \ No newline at end of file