]> git.immae.eu Git - github/shaarli/Shaarli.git/blame - webpack.config.js
Add a setting to retrieve bookmark metadata asynchrounously
[github/shaarli/Shaarli.git] / webpack.config.js
CommitLineData
47978e87
A
1const path = require('path');
2const glob = require('glob');
3
4// Minify JS
96746d71 5const TerserPlugin = require('terser-webpack-plugin');
47978e87
A
6
7// This plugin extracts the CSS into its own file instead of tying it with the JS.
8// It prevents:
9// - not having styles due to a JS error
10// - the flash page without styles during JS loading
96746d71 11const MiniCssExtractPlugin = require("mini-css-extract-plugin");
47978e87 12
96746d71 13const extractCss = new MiniCssExtractPlugin({
47978e87 14 filename: "../css/[name].min.css",
47978e87
A
15});
16
17module.exports = [
18 {
96746d71 19 mode: 'production',
47978e87 20 entry: {
e85b7a05 21 thumbnails: './assets/common/js/thumbnails.js',
28f26524 22 thumbnails_update: './assets/common/js/thumbnails-update.js',
4cf3564d 23 metadata: './assets/common/js/metadata.js',
47978e87
A
24 pluginsadmin: './assets/default/js/plugins-admin.js',
25 shaarli: [
26 './assets/default/js/base.js',
27 './assets/default/scss/shaarli.scss',
28 ].concat(glob.sync('./assets/default/img/*')),
cf92b4dd 29 markdown: './assets/common/css/markdown.css',
47978e87
A
30 },
31 output: {
32 filename: '[name].min.js',
33 path: path.resolve(__dirname, 'tpl/default/js/')
34 },
35 module: {
36 rules: [
37 {
38 test: /\.js$/,
39 exclude: /node_modules/,
40 use: {
41 loader: 'babel-loader',
42 options: {
43 presets: [
96746d71 44 '@babel/preset-env',
47978e87
A
45 ]
46 }
47 }
48 },
49 {
cf92b4dd 50 test: /\.s?css/,
96746d71
A
51 use: [
52 {
53 loader: MiniCssExtractPlugin.loader,
47978e87 54 options: {
96746d71
A
55 publicPath: 'tpl/default/css/',
56 },
57 },
58 'css-loader',
59 'sass-loader',
60 ],
47978e87
A
61 },
62 {
63 test: /\.(gif|png|jpe?g|svg|ico)$/i,
64 use: [
65 {
66 loader: 'file-loader',
67 options: {
68 name: '../img/[name].[ext]',
69 publicPath: 'tpl/default/img/',
70 }
71 }
72 ],
73 },
74 {
75 test: /\.(eot|ttf|woff|woff2)(\?v=[0-9]\.[0-9]\.[0-9])?$/,
76 loader: 'file-loader',
77 options: {
78 name: '../fonts/[name].[ext]',
79 // do not add a publicPath here because it's already handled by CSS's publicPath
96746d71 80 publicPath: '../default/',
47978e87
A
81 }
82 },
83 ],
84 },
96746d71
A
85 optimization: {
86 minimize: true,
87 minimizer: [new TerserPlugin()],
88 },
47978e87 89 plugins: [
96746d71 90 extractCss,
47978e87
A
91 ],
92 },
93 {
96746d71 94 mode: 'production',
47978e87
A
95 entry: {
96 shaarli: [
97 './assets/vintage/js/base.js',
98 './assets/vintage/css/reset.css',
99 './assets/vintage/css/shaarli.css',
100 ].concat(glob.sync('./assets/vintage/img/*')),
cf92b4dd 101 markdown: './assets/common/css/markdown.css',
e85b7a05 102 thumbnails: './assets/common/js/thumbnails.js',
4cf3564d 103 metadata: './assets/common/js/metadata.js',
28f26524 104 thumbnails_update: './assets/common/js/thumbnails-update.js',
47978e87
A
105 },
106 output: {
107 filename: '[name].min.js',
108 path: path.resolve(__dirname, 'tpl/vintage/js/')
109 },
110 module: {
111 rules: [
112 {
113 test: /\.js$/,
114 exclude: /node_modules/,
115 use: {
116 loader: 'babel-loader',
117 options: {
118 presets: [
96746d71 119 '@babel/preset-env',
47978e87
A
120 ]
121 }
122 }
123 },
124 {
125 test: /\.css$/,
96746d71
A
126 use: [
127 {
128 loader: MiniCssExtractPlugin.loader,
47978e87 129 options: {
96746d71
A
130 publicPath: 'tpl/vintage/css/',
131 },
132 },
133 'css-loader',
134 'sass-loader',
135 ],
47978e87
A
136 },
137 {
138 test: /\.(gif|png|jpe?g|svg|ico)$/i,
139 use: [
140 {
141 loader: 'file-loader',
142 options: {
143 name: '../img/[name].[ext]',
144 publicPath: '',
145 }
146 }
147 ],
148 },
149 ],
150 },
96746d71
A
151 optimization: {
152 minimize: true,
153 minimizer: [new TerserPlugin()],
154 },
47978e87 155 plugins: [
96746d71 156 extractCss,
47978e87
A
157 ],
158 },
159];