]> git.immae.eu Git - github/shaarli/Shaarli.git/blame - webpack.config.js
Merge pull request #1698 from ArthurHoaro/feature/plugins-search-filter
[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: {
5d8de758 21 shaare_batch: './assets/common/js/shaare-batch.js',
e85b7a05 22 thumbnails: './assets/common/js/thumbnails.js',
28f26524 23 thumbnails_update: './assets/common/js/thumbnails-update.js',
4cf3564d 24 metadata: './assets/common/js/metadata.js',
47978e87
A
25 pluginsadmin: './assets/default/js/plugins-admin.js',
26 shaarli: [
27 './assets/default/js/base.js',
28 './assets/default/scss/shaarli.scss',
29 ].concat(glob.sync('./assets/default/img/*')),
cf92b4dd 30 markdown: './assets/common/css/markdown.css',
47978e87
A
31 },
32 output: {
33 filename: '[name].min.js',
34 path: path.resolve(__dirname, 'tpl/default/js/')
35 },
36 module: {
37 rules: [
38 {
39 test: /\.js$/,
40 exclude: /node_modules/,
41 use: {
42 loader: 'babel-loader',
43 options: {
44 presets: [
96746d71 45 '@babel/preset-env',
47978e87
A
46 ]
47 }
48 }
49 },
50 {
cf92b4dd 51 test: /\.s?css/,
96746d71
A
52 use: [
53 {
54 loader: MiniCssExtractPlugin.loader,
47978e87 55 options: {
96746d71
A
56 publicPath: 'tpl/default/css/',
57 },
58 },
59 'css-loader',
60 'sass-loader',
61 ],
47978e87
A
62 },
63 {
64 test: /\.(gif|png|jpe?g|svg|ico)$/i,
65 use: [
66 {
67 loader: 'file-loader',
68 options: {
69 name: '../img/[name].[ext]',
70 publicPath: 'tpl/default/img/',
71 }
72 }
73 ],
74 },
75 {
76 test: /\.(eot|ttf|woff|woff2)(\?v=[0-9]\.[0-9]\.[0-9])?$/,
77 loader: 'file-loader',
78 options: {
79 name: '../fonts/[name].[ext]',
80 // do not add a publicPath here because it's already handled by CSS's publicPath
96746d71 81 publicPath: '../default/',
47978e87
A
82 }
83 },
84 ],
85 },
96746d71
A
86 optimization: {
87 minimize: true,
88 minimizer: [new TerserPlugin()],
89 },
47978e87 90 plugins: [
96746d71 91 extractCss,
47978e87
A
92 ],
93 },
94 {
96746d71 95 mode: 'production',
47978e87
A
96 entry: {
97 shaarli: [
98 './assets/vintage/js/base.js',
99 './assets/vintage/css/reset.css',
100 './assets/vintage/css/shaarli.css',
101 ].concat(glob.sync('./assets/vintage/img/*')),
cf92b4dd 102 markdown: './assets/common/css/markdown.css',
e85b7a05 103 thumbnails: './assets/common/js/thumbnails.js',
4cf3564d 104 metadata: './assets/common/js/metadata.js',
28f26524 105 thumbnails_update: './assets/common/js/thumbnails-update.js',
47978e87
A
106 },
107 output: {
108 filename: '[name].min.js',
109 path: path.resolve(__dirname, 'tpl/vintage/js/')
110 },
111 module: {
112 rules: [
113 {
114 test: /\.js$/,
115 exclude: /node_modules/,
116 use: {
117 loader: 'babel-loader',
118 options: {
119 presets: [
96746d71 120 '@babel/preset-env',
47978e87
A
121 ]
122 }
123 }
124 },
125 {
126 test: /\.css$/,
96746d71
A
127 use: [
128 {
129 loader: MiniCssExtractPlugin.loader,
47978e87 130 options: {
96746d71
A
131 publicPath: 'tpl/vintage/css/',
132 },
133 },
134 'css-loader',
135 'sass-loader',
136 ],
47978e87
A
137 },
138 {
139 test: /\.(gif|png|jpe?g|svg|ico)$/i,
140 use: [
141 {
142 loader: 'file-loader',
143 options: {
144 name: '../img/[name].[ext]',
c61d8a85
A
145 // do not add a publicPath here because it's already handled by CSS's publicPath
146 publicPath: '../vintage',
47978e87
A
147 }
148 }
149 ],
150 },
151 ],
152 },
96746d71
A
153 optimization: {
154 minimize: true,
155 minimizer: [new TerserPlugin()],
156 },
47978e87 157 plugins: [
96746d71 158 extractCss,
47978e87
A
159 ],
160 },
161];