74 lines
2.2 KiB
JavaScript
74 lines
2.2 KiB
JavaScript
|
const path = require("path");
|
||
|
const { DefinePlugin } = require("webpack");
|
||
|
const CopyWebpackPlugin = require("copy-webpack-plugin");
|
||
|
const { buildHTMLWebpackPluginsRecursive } = require("./configs/build-templates");
|
||
|
const {
|
||
|
kemonoSite,
|
||
|
nodeEnv,
|
||
|
iconsPrepend,
|
||
|
bannersPrepend,
|
||
|
thumbnailsPrepend,
|
||
|
creatorsLocation,
|
||
|
} = require("./configs/vars");
|
||
|
|
||
|
const projectPath = path.resolve(__dirname, "src");
|
||
|
const pagesPath = path.join(projectPath, "pages");
|
||
|
const pagePlugins = buildHTMLWebpackPluginsRecursive(pagesPath, {
|
||
|
fileExtension: "html",
|
||
|
pluginOptions: {
|
||
|
inject: false,
|
||
|
minify: false,
|
||
|
},
|
||
|
});
|
||
|
|
||
|
/**
|
||
|
* TODO: make separate entries for `admin` and `moderator`
|
||
|
* @type import("webpack").Configuration
|
||
|
*/
|
||
|
const webpackConfig = {
|
||
|
entry: {
|
||
|
global: path.join(projectPath, "js", "global.js"),
|
||
|
admin: path.join(projectPath, "js", "admin.js"),
|
||
|
// moderator: path.join(projectPath, "js", "moderator.js"),
|
||
|
},
|
||
|
plugins: [
|
||
|
...pagePlugins,
|
||
|
// https://webpack.js.org/plugins/define-plugin/
|
||
|
new DefinePlugin({
|
||
|
BUNDLER_ENV_KEMONO_SITE: JSON.stringify(kemonoSite),
|
||
|
BUNDLER_ENV_NODE_ENV: JSON.stringify(nodeEnv),
|
||
|
BUNDLER_ENV_ICONS_PREPEND: JSON.stringify(iconsPrepend),
|
||
|
BUNDLER_ENV_BANNERS_PREPEND: JSON.stringify(bannersPrepend),
|
||
|
BUNDLER_ENV_THUMBNAILS_PREPEND: JSON.stringify(thumbnailsPrepend),
|
||
|
BUNDLER_ENV_CREATORS_LOCATION: JSON.stringify(creatorsLocation),
|
||
|
}),
|
||
|
new CopyWebpackPlugin({
|
||
|
patterns: [
|
||
|
{
|
||
|
from: "static",
|
||
|
to: "static",
|
||
|
},
|
||
|
],
|
||
|
}),
|
||
|
],
|
||
|
resolve: {
|
||
|
extensions: [".js"],
|
||
|
alias: {
|
||
|
["@wp/pages"]: path.join(projectPath, "pages", "_index.js"),
|
||
|
["@wp/components"]: path.join(projectPath, "pages", "components", "_index.js"),
|
||
|
["@wp/env"]: path.join(projectPath, "env"),
|
||
|
["@wp/lib"]: path.join(projectPath, "lib"),
|
||
|
["@wp/js"]: path.join(projectPath, "js"),
|
||
|
["@wp/css"]: path.join(projectPath, "css"),
|
||
|
["@wp/assets"]: path.join(projectPath, "assets"),
|
||
|
["@wp/api"]: path.join(projectPath, "api", "_index.js"),
|
||
|
["@wp/utils"]: path.join(projectPath, "utils", "_index.js"),
|
||
|
},
|
||
|
fallback: {
|
||
|
stream: false,
|
||
|
},
|
||
|
},
|
||
|
};
|
||
|
|
||
|
module.exports = webpackConfig;
|