feat: expose plugins and presets on SwaggerUI global symbol (#9189)
Part of this commit is also: - complete plugins consolidation - complete presets consolidation - build system consolidation Refs #9188
This commit is contained in:
123
webpack/dev.js
Normal file
123
webpack/dev.js
Normal file
@@ -0,0 +1,123 @@
|
||||
/**
|
||||
* @prettier
|
||||
*/
|
||||
|
||||
const path = require("path")
|
||||
const ReactRefreshWebpackPlugin = require("@pmmmwh/react-refresh-webpack-plugin")
|
||||
const HtmlWebpackPlugin = require("html-webpack-plugin")
|
||||
const {
|
||||
HtmlWebpackSkipAssetsPlugin,
|
||||
} = require("html-webpack-skip-assets-plugin")
|
||||
|
||||
const configBuilder = require("./_config-builder")
|
||||
const styleConfig = require("./stylesheets")
|
||||
|
||||
const projectBasePath = path.join(__dirname, "../")
|
||||
const isDevelopment = process.env.NODE_ENV !== "production"
|
||||
|
||||
const devConfig = configBuilder(
|
||||
{
|
||||
minimize: false,
|
||||
mangle: false,
|
||||
sourcemaps: true,
|
||||
includeDependencies: true,
|
||||
},
|
||||
{
|
||||
mode: "development",
|
||||
entry: {
|
||||
"swagger-ui-bundle": ["./src/core/index.js"],
|
||||
"swagger-ui-standalone-preset": [
|
||||
"./src/standalone/presets/standalone/index.js",
|
||||
],
|
||||
"swagger-ui": "./src/style/main.scss",
|
||||
vendors: ["react-refresh/runtime"],
|
||||
},
|
||||
|
||||
performance: {
|
||||
hints: false,
|
||||
},
|
||||
|
||||
output: {
|
||||
filename: "[name].js",
|
||||
chunkFilename: "[id].js",
|
||||
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: 3200,
|
||||
host: "0.0.0.0",
|
||||
hot: true,
|
||||
static: {
|
||||
directory: path.resolve(projectBasePath, "dev-helpers"),
|
||||
publicPath: "/",
|
||||
},
|
||||
client: {
|
||||
logging: "info",
|
||||
progress: true,
|
||||
},
|
||||
},
|
||||
|
||||
module: {
|
||||
rules: [
|
||||
{
|
||||
test: /\.jsx?$/,
|
||||
include: [
|
||||
path.join(projectBasePath, "src"),
|
||||
path.join(projectBasePath, "node_modules", "object-assign-deep"),
|
||||
],
|
||||
loader: "babel-loader",
|
||||
options: {
|
||||
retainLines: true,
|
||||
cacheDirectory: true,
|
||||
plugins: [
|
||||
isDevelopment && require.resolve("react-refresh/babel"),
|
||||
].filter(Boolean),
|
||||
},
|
||||
},
|
||||
{
|
||||
test: /\.(txt|yaml)$/,
|
||||
type: "asset/source",
|
||||
},
|
||||
{
|
||||
test: /\.(png|jpg|jpeg|gif|svg)$/,
|
||||
type: "asset/inline",
|
||||
},
|
||||
],
|
||||
},
|
||||
|
||||
plugins: [
|
||||
isDevelopment && new ReactRefreshWebpackPlugin({ library: "[name]" }),
|
||||
new HtmlWebpackPlugin({
|
||||
template: path.join(projectBasePath, "dev-helpers", "index.html"),
|
||||
}),
|
||||
new HtmlWebpackSkipAssetsPlugin({
|
||||
skipAssets: [/swagger-ui\.js/],
|
||||
}),
|
||||
].filter(Boolean),
|
||||
|
||||
optimization: {
|
||||
runtimeChunk: "single", // for multiple entry points using ReactRefreshWebpackPlugin
|
||||
},
|
||||
}
|
||||
)
|
||||
|
||||
// mix in the style config's plugins and loader rules
|
||||
|
||||
devConfig.plugins = [...devConfig.plugins, ...styleConfig.plugins]
|
||||
|
||||
devConfig.module.rules = [
|
||||
...devConfig.module.rules,
|
||||
...styleConfig.module.rules,
|
||||
]
|
||||
|
||||
module.exports = devConfig
|
||||
Reference in New Issue
Block a user