forked from liferay/alloy-editor
-
Notifications
You must be signed in to change notification settings - Fork 0
/
webpack.common.js
118 lines (112 loc) · 2.26 KB
/
webpack.common.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
/**
* SPDX-FileCopyrightText: © 2014 Liferay, Inc. <https://liferay.com>
* SPDX-License-Identifier: LGPL-3.0-or-later
*/
const path = require('path');
/**
* Turns a root-relative path into an absolute one.
*
* This ensures that webpack works identically when invoked from the
* top-level (eg. with `yarn webpack` or from a subdirectory (eg.
* from a file under `scripts/gulp`).
*/
function toAbsolute(rootRelativePath) {
return path.join(__dirname, rootRelativePath);
}
/**
* For windows compatibility, we need to use windows path separators for webpack
* "test" properties.
*/
function toTestRegExp(file) {
return new RegExp(path.normalize(file).replace(/\\/g, '\\\\'));
}
const base = {
/**
* https://webpack.js.org/configuration/entry-context/
*/
context: toAbsolute('.'),
/**
* https://webpack.js.org/configuration/module/
*/
module: {
rules: [
{
include: toAbsolute('./src'),
loader: 'babel-loader',
test: /\.(js|jsx)$/,
},
{
test: toTestRegExp('scripts/build/version.js'),
use: {
loader: 'val-loader',
},
},
],
},
};
module.exports = {
config: {
...base,
entry: './scripts/build/with-all.js',
output: {
path: toAbsolute('./dist/alloy-editor'),
},
},
core: {
...base,
entry: './src/adapter/main.js',
externals: {
react: {
amd: 'react',
commonjs: 'react',
commonjs2: 'react',
root: 'React',
umd: 'react',
},
'react-dom': {
amd: 'react-dom',
commonjs: 'react-dom',
commonjs2: 'react-dom',
root: 'ReactDOM',
umd: 'react-dom',
},
},
output: {
library: 'AlloyEditor',
libraryTarget: 'window',
path: toAbsolute('./dist/alloy-editor'),
},
},
noCkeditor: {
...base,
entry: './scripts/build/with-react.js',
output: {
libraryTarget: 'window',
path: toAbsolute('./dist/alloy-editor'),
},
},
noReact: {
...base,
entry: './scripts/build/with-ckeditor.js',
externals: {
react: {
amd: 'react',
commonjs: 'react',
commonjs2: 'react',
root: 'React',
umd: 'react',
},
'react-dom': {
amd: 'react-dom',
commonjs: 'react-dom',
commonjs2: 'react-dom',
root: 'ReactDOM',
umd: 'react-dom',
},
},
output: {
libraryTarget: 'umd',
path: toAbsolute('./dist/alloy-editor'),
},
},
};