forked from swagger-api/swagger-editor
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathe2e.babel.js
125 lines (118 loc) · 2.97 KB
/
e2e.babel.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
/**
* @prettier
*/
/**
* The goal of this config is to mimic the production build setup as close as possible for e2e testing.
*/
import path from "path"
import HtmlWebpackPlugin from "html-webpack-plugin"
import { HtmlWebpackSkipAssetsPlugin } from "html-webpack-skip-assets-plugin"
import configBuilder from "./_config-builder"
import styleConfig from "./stylesheets.babel"
const projectBasePath = path.join(__dirname, "../")
const emitWorkerAssets = false
const e2eConfig = configBuilder(
{
minimize: true,
mangle: true,
sourcemaps: true,
includeDependencies: true,
emitWorkerAssets,
},
{
mode: "production",
entry: {
"swagger-editor-bundle": [
"./src/index.js",
],
"swagger-editor-standalone-preset": [
"./src/standalone/index.js",
],
"swagger-editor": "./src/styles/main.less",
},
performance: {
hints: false,
},
output: {
filename: "[name].js",
chunkFilename: "[id].js",
globalObject: "this",
library: {
name: "[name]",
export: "default",
},
publicPath: "/",
},
devServer: {
allowedHosts: "all", // for development within VMs
headers: {
"Access-Control-Allow-Origin": "*",
"Access-Control-Allow-Methods": "*",
"Access-Control-Allow-Headers": "*",
},
port: 3261,
host: "0.0.0.0",
static: {
directory: path.resolve(projectBasePath, "dev-helpers"),
publicPath: "/",
},
client: {
logging: "info",
progress: true,
},
},
module: {
rules: [
{
test: /\.worker\.js$/,
use: [
{
loader: "worker-loader",
options: {
inline: emitWorkerAssets ? "fallback" : "no-fallback",
filename: "[name].js",
},
},
"babel-loader",
],
},
{
test: /\.jsx?$/,
include: [
path.join(projectBasePath, "src"),
path.join(projectBasePath, "node_modules", "object-assign-deep"),
],
loader: "babel-loader",
options: {
retainLines: true,
cacheDirectory: true,
},
},
{
test: /\.(txt|yaml)$/,
type: "asset/source",
},
{
test: /\.(png|jpg|jpeg|gif|svg)$/,
type: "asset/inline",
},
],
},
plugins: [
new HtmlWebpackPlugin({
template: path.join(projectBasePath, "dev-helpers", "index.html"),
// excludeChunks: ["validator.worker"],
}),
new HtmlWebpackSkipAssetsPlugin({
skipAssets: [/swagger-editor\.js/],
}),
].filter(Boolean),
}
)
// mix in the style config's plugins and loader rules
e2eConfig.plugins = [...e2eConfig.plugins, ...styleConfig.plugins]
e2eConfig.module.rules = [
...e2eConfig.module.rules,
...styleConfig.module.rules,
]
export default e2eConfig