initial commit
This commit is contained in:
66
webpack/options/plugins.js
Normal file
66
webpack/options/plugins.js
Normal file
@@ -0,0 +1,66 @@
|
||||
import ReactRefreshWebpackPlugin from "@pmmmwh/react-refresh-webpack-plugin";
|
||||
import CopyPlugin from "copy-webpack-plugin";
|
||||
import Dotenv from "dotenv-webpack";
|
||||
import ESLintPlugin from "eslint-webpack-plugin";
|
||||
import ForkTsCheckerWebpackPlugin from "fork-ts-checker-webpack-plugin";
|
||||
import HtmlWebpackPlugin from "html-webpack-plugin";
|
||||
import { join } from "path";
|
||||
import { ProgressPlugin } from "webpack";
|
||||
|
||||
import config, { EnvironmentConfig } from "../config";
|
||||
|
||||
const basePlugins = [
|
||||
new HtmlWebpackPlugin({
|
||||
publicPath: "/",
|
||||
template: join(config.webpack.rootDir, "src/index.html"),
|
||||
}),
|
||||
new ForkTsCheckerWebpackPlugin({
|
||||
typescript: {
|
||||
configFile: join(config.webpack.rootDir, "tsconfig.json"),
|
||||
mode: "write-references",
|
||||
},
|
||||
}),
|
||||
new ESLintPlugin({
|
||||
context: join(config.webpack.rootDir, "src"),
|
||||
extensions: ["ts", "tsx"],
|
||||
failOnError: !config.isDev,
|
||||
lintDirtyModulesOnly: true,
|
||||
}),
|
||||
new CopyPlugin({
|
||||
patterns: [
|
||||
{
|
||||
from: join(config.webpack.rootDir, "src/assets"),
|
||||
to: "assets",
|
||||
globOptions: {
|
||||
dot: false,
|
||||
ignore: ["**/*.tsx", "**/*.ico"],
|
||||
},
|
||||
noErrorOnMissing: true,
|
||||
},
|
||||
],
|
||||
}),
|
||||
new Dotenv({
|
||||
path: (() => {
|
||||
let path = "./.env";
|
||||
if (config.isProd) {
|
||||
path = "./.env.production";
|
||||
} else if (config.isPrelive) {
|
||||
path = "./.env.prelive";
|
||||
} else if (config.isNonprod) {
|
||||
path = "./.env.nonprod";
|
||||
}
|
||||
console.log(`Using '${path}' for build variables.`)
|
||||
return path;
|
||||
})(),
|
||||
}),
|
||||
];
|
||||
|
||||
const devPlugins = [
|
||||
new ProgressPlugin(),
|
||||
!config.isProd &&
|
||||
new ReactRefreshWebpackPlugin({
|
||||
overlay: false,
|
||||
}),
|
||||
].filter((_) => _);
|
||||
|
||||
export { basePlugins, devPlugins };
|
||||
Reference in New Issue
Block a user