storj/web/satellite/vue.config.js
Egon Elbre f5ac00f909 web/satellite: switch to eslint, sass, bump deps
tslint has been deprecated so it's nice to switch to eslint.
Currently this uses a minimal eslint, to get things up and running.

node-sass requires C which does not work nicely on all platforms.

Change-Id: I3ca9adf2971475c009e541652b7637c18ad960f4
2021-08-03 15:56:33 +00:00

59 lines
1.7 KiB
JavaScript

// Copyright (C) 2019 Storj Labs, Inc.
// See LICENSE for copying information.
const path = require('path');
const CompressionWebpackPlugin = require('compression-webpack-plugin');
const StyleLintPlugin = require('stylelint-webpack-plugin');
const WorkerPlugin = require('worker-plugin');
const productionBrotliExtensions = ['js', 'css', 'ttf', 'woff', 'woff2'];
module.exports = {
publicPath: "/static/dist",
productionSourceMap: false,
parallel: true,
configureWebpack: {
plugins: [
new CompressionWebpackPlugin({
algorithm: 'brotliCompress',
filename: '[path][name].br',
test: new RegExp('\\.(' + productionBrotliExtensions.join('|') + ')$'),
threshold: 1024,
minRatio: 0.8
}),
new StyleLintPlugin({
files: ['**/*.{vue,css,sss,less,scss,sass}'],
ignoreFiles: ["./node_modules/**"],
emitWarning: true,
}),
new WorkerPlugin({
globalObject: 'self',
})
],
},
chainWebpack: config => {
config.output.chunkFilename(`js/vendors_[name]_[hash].js`);
config.output.filename(`js/app_[hash].js`);
config.resolve.alias
.set('@', path.resolve('src'));
config
.plugin('html')
.tap(args => {
args[0].template = './index.html';
return args
});
const svgRule = config.module.rule('svg');
svgRule.uses.clear();
svgRule
.use('babel-loader')
.loader('babel-loader')
.end()
.use('vue-svg-loader')
.loader('vue-svg-loader');
}
};