UNPKG

generator-addin

Version:

MyGeotab/Geotab Drive add-in generator

127 lines (123 loc) 4.04 kB
/* eslint-disable */ const path = require('path'); // const FixStyleOnlyEntriesPlugin = require('webpack-fix-style-only-entries'); // const OptimizeCSSAssetsPlugin = require('optimize-css-assets-webpack-plugin'); // const UglifyJsPlugin = require('uglifyjs-webpack-plugin'); // const ImageminPlugin = require('imagemin-webpack'); // const ImageminMozjpeg = require('imagemin-mozjpeg'); // const ImageminPngquant = require('imagemin-pngquant'); // const ImageminGiflossy = require('imagemin-giflossy'); // const ImageminSvgo = require('imagemin-svgo'); const CopyWebpackPlugin = require('copy-webpack-plugin'); const { merge } = require('webpack-merge'); const common = require('./webpack.common.js'); const MiniCssExtractPlugin = require('mini-css-extract-plugin'); const config = require('./src/app/config.json'); const ESLintPlugin = require('eslint-webpack-plugin'); /** * Removes "dev" element of the config tree on production build * * @param {Buffer} content content of file * @param {string} path path to file */ const transform = function (content, path) { let config = JSON.parse(content); let host = config.dev.dist.host; let len = config.items.length; const { name } = config; for (let i = 0; i < len; i++) { config.items[i].url = `${name}/` + config.items[i].url; } delete config['dev']; let response = JSON.stringify(config, null, 2); // Returned string is written to file return response; } module.exports = merge(common, { // devtool: '', entry: { driverProductivity: './src/app/index.js' }, module: { rules: [ { test: /\.css$/, exclude: /\.dev/, use: [ { loader: MiniCssExtractPlugin.loader, options: { publicPath: '' } }, 'css-loader', { loader: './src/.dev/loaders/css-sandbox/css-sandbox.js', options: { prefix: '#driverProductivity' } } ] }, { test: /\.js$/, exclude: [/node_modules/, /\.dev/], use: { loader: 'babel-loader', options: { presets: ['@babel/preset-env'] } }, }, { test: /\.html$/, exclude: /\.dev/, use: [ { loader: 'html-loader', options: { minimize: true } } ] }, { test: /\.(png|svg|jpg|gif)$/, exclude: /\.dev/, use: [ 'file-loader' ] } ] }, plugins: [ // new FixStyleOnlyEntriesPlugin(), new ESLintPlugin({ exclude: ['node_modules', '.dev'], }), // new OptimizeCSSAssetsPlugin({}), // new UglifyJsPlugin({ // test: /\.js(\?.*)?$/i // }), // new ImageminPlugin({ // exclude: /dev/, // test: /\.(jpe?g|png|gif|svg)$/, // plugins: [ // ImageminMozjpeg(), // ImageminPngquant(), // ImageminGiflossy(), // ImageminSvgo({ cleanupIDs: false }) // ] // }), new CopyWebpackPlugin({ patterns: [ { from: './src/app/images/icon.svg', to: 'images/' }, { from: './src/app/config.json', transform: transform, to: 'configuration.json' }, { from: './src/app/translations/', to: 'translations/' } ] }) ], output: { publicPath: '' } });