mirror of
https://github.com/Lissy93/personal-security-checklist.git
synced 2024-12-24 14:59:26 -05:00
138 lines
3.9 KiB
JavaScript
138 lines
3.9 KiB
JavaScript
|
|
||
|
const path = require('path');
|
||
|
const UglifyJsPlugin = require("uglifyjs-webpack-plugin");
|
||
|
const MiniCssExtractPlugin = require("mini-css-extract-plugin");
|
||
|
const OptimizeCSSAssetsPlugin = require("optimize-css-assets-webpack-plugin");
|
||
|
const CopyWebpackPlugin = require('copy-webpack-plugin')
|
||
|
const HandlebarsPlugin = require("handlebars-webpack-plugin");
|
||
|
const FaviconsWebpackPlugin = require('favicons-webpack-plugin')
|
||
|
const HtmlWebpackPlugin = require('html-webpack-plugin');
|
||
|
|
||
|
|
||
|
const webpack = require('webpack');
|
||
|
|
||
|
module.exports = {
|
||
|
|
||
|
mode: 'production',
|
||
|
|
||
|
entry: {
|
||
|
'voronoi-app': './src/main.js',
|
||
|
analytics: './src/scripts/google-analytics.js',
|
||
|
},
|
||
|
|
||
|
output: {
|
||
|
path: path.join(__dirname, 'dist'),
|
||
|
publicPath: "/dist/",
|
||
|
filename: '[name].js'
|
||
|
},
|
||
|
|
||
|
resolve: {
|
||
|
extensions: ['.ts', '.js' ]
|
||
|
},
|
||
|
|
||
|
module: {
|
||
|
rules: [
|
||
|
{
|
||
|
test: /\.js?$/,
|
||
|
exclude: /node_modules/,
|
||
|
use: {
|
||
|
loader: 'babel-loader',
|
||
|
options: {
|
||
|
presets: ['@babel/preset-es2016']
|
||
|
}
|
||
|
}
|
||
|
},
|
||
|
|
||
|
{
|
||
|
test: /\.ts?$/,
|
||
|
loader: 'ts-loader',
|
||
|
exclude: /node_modules/,
|
||
|
options: {
|
||
|
configFile: 'src/tsconfig.json'
|
||
|
}
|
||
|
},
|
||
|
|
||
|
{
|
||
|
test: /\.scss$/,
|
||
|
use: [ 'style-loader', MiniCssExtractPlugin.loader, 'css-loader', 'sass-loader']
|
||
|
}
|
||
|
|
||
|
]
|
||
|
},
|
||
|
devServer: { /* todo */},
|
||
|
|
||
|
externals: {
|
||
|
d3: 'd3'
|
||
|
},
|
||
|
|
||
|
optimization: {
|
||
|
minimizer: [
|
||
|
new UglifyJsPlugin({
|
||
|
cache: true,
|
||
|
parallel: true
|
||
|
}),
|
||
|
new OptimizeCSSAssetsPlugin({})
|
||
|
]
|
||
|
},
|
||
|
|
||
|
plugins: [
|
||
|
|
||
|
new FaviconsWebpackPlugin({
|
||
|
logo: './src/assets/icon.png',
|
||
|
prefix: 'icons/',
|
||
|
inject: false,
|
||
|
persistentCache: false,
|
||
|
icons: {
|
||
|
android: true,
|
||
|
appleIcon: false,
|
||
|
appleStartup: false,
|
||
|
coast: false,
|
||
|
favicons: true,
|
||
|
firefox: false,
|
||
|
windows: false,
|
||
|
yandex: false
|
||
|
}
|
||
|
}),
|
||
|
|
||
|
new HandlebarsPlugin({
|
||
|
entry: 'src/index.hbs',
|
||
|
output: 'index.html',
|
||
|
data: 'src/locals.json'
|
||
|
}),
|
||
|
|
||
|
new MiniCssExtractPlugin({
|
||
|
filename: 'voronoi-styles.css',
|
||
|
}),
|
||
|
|
||
|
// new HtmlWebpackPlugin({
|
||
|
// template: 'src/main.js',
|
||
|
// title: 'HTML Webpack Plugin',
|
||
|
// }),
|
||
|
|
||
|
new webpack.ProvidePlugin({
|
||
|
_: "underscore"
|
||
|
}),
|
||
|
|
||
|
new CopyWebpackPlugin([
|
||
|
// Static Assets
|
||
|
{ from: 'src/manifest.json', to: '' },
|
||
|
{ from: 'src/assets', to: 'assets' },
|
||
|
|
||
|
// Offline fallback for CDN libraries - JS
|
||
|
{ from: 'node_modules/d3/dist/d3.min.js', to: 'lib/js' },
|
||
|
{ from: 'node_modules/docsify/lib/docsify.min.js', to: 'lib/js' },
|
||
|
{ from: 'node_modules/docsify/lib/plugins/emoji.min.js', to: 'lib/js' },
|
||
|
{ from: 'node_modules/docsify/lib/plugins/external-script.min.js', to: 'lib/js' },
|
||
|
{ from: 'node_modules/docsify/lib/plugins/ga.min.js', to: 'lib/js' },
|
||
|
{ from: 'node_modules/docsify/lib/plugins/gitalk.min.js', to: 'lib/js' },
|
||
|
{ from: 'node_modules/docsify/lib/plugins/search.min.js', to: 'lib/js' },
|
||
|
{ from: 'node_modules/docsify/lib/plugins/zoom-image.min.js', to: 'lib/js' },
|
||
|
|
||
|
// Offline fallback for CDN libraries - CSS
|
||
|
{ from: 'node_modules/raleway-webfont/raleway.min.css', to: 'lib/font' },
|
||
|
{ from: 'node_modules/bulma/css/bulma.min.css', to: 'lib/css' },
|
||
|
{ from: 'node_modules/docsify/lib/themes/vue.css', to: 'lib/css' },
|
||
|
{ from: 'node_modules/font-awesome/css/font-awesome.min.css', to: 'lib/css' }
|
||
|
])
|
||
|
]
|
||
|
};
|