-
Notifications
You must be signed in to change notification settings - Fork 3
Expand file tree
/
Copy pathwebpack.config.js
More file actions
80 lines (72 loc) · 2.25 KB
/
webpack.config.js
File metadata and controls
80 lines (72 loc) · 2.25 KB
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
/* eslint-disable */
const path = require('path');
const SpriteLoaderPlugin = require('svg-sprite-loader/plugin');
const LodashModuleReplacementPlugin = require('lodash-webpack-plugin');
const fs = require('fs');
const _ = require('lodash');
const plugins = {};
for (const plugin of fs.readdirSync(path.resolve(__dirname, './src/js/plugins'))) {
if (plugin.indexOf(".Plugin.ts") > 0)
plugins[plugin.substring(0, plugin.indexOf(".Plugin.ts"))] = path.resolve(__dirname, './src/js/plugins/', plugin);
}
const globalConfig = {
output: {
libraryTarget: "umd"
},
resolve: {
// Add '.ts' and '.tsx' as resolvable extensions.
extensions: [".js", ".ts", ".tsx"]
},
module: {
rules: [
{
test: /\.tsx?$/,
use: 'ts-loader',
exclude: /node_modules/,
},
{
test: /\.js$/,
use: ["source-map-loader"],
enforce: "pre"
},
{
test: /\.svg$/,
loader: 'svg-sprite-loader'
}
],
},
plugins: [
new SpriteLoaderPlugin(),
new LodashModuleReplacementPlugin()
]
};
module.exports = [
function (env, argv) {
const prod = argv.mode === 'production';
const devtool = prod ? false : "source-map";
return _.merge(globalConfig, {
entry: path.resolve(__dirname, './src/js/Index.ts'),
output: {
filename: 'formr.bundle.js',
path: path.resolve(__dirname, `dist/${argv.mode === 'production' ? 'prod' : 'dev'}/js/`),
library: 'Formr'
},
devtool: devtool,
mode: argv.mode
});
},
function (env, argv) {
const prod = argv.mode === 'production';
const devtool = prod ? false : "source-map";
return _.merge(globalConfig, {
entry: plugins,
output: {
filename: 'formr.[name].js',
path: path.resolve(__dirname, `dist/${argv.mode === 'production' ? 'prod' : 'dev'}/js/plugins`),
library: 'FormrPlugins'
},
devtool: devtool,
mode: argv.mode
});
}
];