-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathwebpack.config.js
134 lines (116 loc) · 3.17 KB
/
webpack.config.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
/* eslint-disable no-undef */
// Custom webpack configuration file, provides generation of service worker
// More information: https://developers.google.com/web/tools/workbox/modules/workbox-webpack-plugin
const path = require('path');
const LwcWebpackPlugin = require('lwc-webpack-plugin');
const { DefinePlugin, } = require('webpack');//HotModuleReplacementPlugin
const { InjectManifest } = require('workbox-webpack-plugin');
const HtmlWebpackPlugin = require('html-webpack-plugin');
const CopyPlugin = require("copy-webpack-plugin");
const { version } = require('./package.json');
//const proxy = 'eys63niz7z4miobpicj7b2xbiu0djcpa';
const proxy = 'zqp716s5y4';
module.exports = (env) => {
const mode = env.production ? 'production' : 'development'
console.log(`🐶 Ourss Version: ${version}`);
console.log(`🖥️ Build mode: ${mode}`);
console.log(`🎗️ Dedicated to Arron Swartz`);
console.log('');
const config = {
mode,
entry: {
'app': './src/index.js',
},
output: {
path: path.join(__dirname, 'dist'),
filename: '[name].js'
},
devServer: {
},
plugins: [
new LwcWebpackPlugin(),
// _after_ LwcWebpackPlugin:
{
apply(compiler) {
compiler.options.module.rules.push({
test: /\.ts$/,
exclude: /node_modules/,
use: {
loader: 'babel-loader',
options: {
presets: ['@babel/preset-typescript'],
plugins: [['@babel/plugin-syntax-decorators', { legacy: true }]],
}
}
})
}
},
new HtmlWebpackPlugin({ template: './src/index.html' }),
new DefinePlugin({
__VERSION__: JSON.stringify(version),
__MODE__: JSON.stringify(mode),
__PROXY__: JSON.stringify(proxy),
}),
new CopyPlugin({
patterns: [
{
from: path.resolve(__dirname, "./src/resources"),
to: path.resolve(__dirname, "./dist/resources"),
},
{
from: path.resolve(__dirname, "./src/manifest.json"),
to: path.resolve(__dirname, "./dist/manifest.json"),
},
],
}),
],
}
// https://github.com/GoogleChrome/workbox/issues/1790
if (env.production) {
console.log('Creating Service Worker...')
config.plugins.push( new InjectManifest({
swSrc: '/src/service-worker.js',
swDest: 'sw.js'
}));
}
return config;
};
/*
const paths = [
'/modules/ourss/app/app.js',
];
for(const path of paths) {
import(path)
.then(mod => {
const name = pathToName(path);
customElements.define(name, mod.CustomElementConstructor);
})
.catch(err => {
console.error(err);
});
}
*/
/**
* Takes path of module and returns name of module
* @param {string} s string of path
* @returns {string} name of module
* @example
* pathToName('./modules/ourss/app/app.js') // ourss-app
export function pathToName(s) {
return s.substring(s.indexOf('modules/')+8, s.lastIndexOf('/'))
.replace(/\//g, '-');
}*/
//new BundleAnalyzerPlugin(),
//new DefinePlugin({
// __VERSION__: String(version)
//}),
//new InjectManifest({
// swSrc: path.join(__dirname, 'service-worker.js'),
// swDest: path.join(__dirname, '..', 'dist', 'sw.js'),
//}),
/*
{
from: path.resolve(__dirname, "./src/service-worker.js"),
to: path.resolve(__dirname, "./dist/sw.js"),
},
*/