1
0
mirror of https://github.com/lensapp/lens.git synced 2025-05-20 05:10:56 +00:00
lens/packages/infrastructure/webpack/src/get-node-config.ts
Iku-turso 9a4b02becb chore: Consolidate infrastructure of webpack to ts to make it scriptable
Co-authored-by: Janne Savolainen <janne.savolainen@live.fi>
Signed-off-by: Iku-turso <mikko.aspiala@gmail.com>
Signed-off-by: Janne Savolainen <janne.savolainen@live.fi>
2023-05-03 09:31:24 +03:00

78 lines
1.5 KiB
TypeScript

import ForkTsCheckerPlugin from "fork-ts-checker-webpack-plugin";
import type { Configuration } from "webpack";
import { MakePeerDependenciesExternalPlugin } from "./plugins/make-peer-dependencies-external";
import { ProtectFromImportingNonDependencies } from "./plugins/protect-from-importing-non-dependencies";
export type Paths = {
entrypointFilePath: string;
outputDirectory: string;
};
export const getNodeConfig = ({
entrypointFilePath,
outputDirectory,
}: Paths): Configuration => ({
name: entrypointFilePath,
entry: { index: entrypointFilePath },
target: "node",
mode: "production",
performance: {
maxEntrypointSize: 100000,
hints: "error",
},
resolve: {
extensions: [".ts", ".tsx", ".js"],
},
plugins: [
new MakePeerDependenciesExternalPlugin(),
new ProtectFromImportingNonDependencies(),
new ForkTsCheckerPlugin({
typescript: {
mode: "write-dts",
configOverwrite: {
include: [entrypointFilePath],
compilerOptions: {
declaration: true,
declarationDir: outputDirectory,
},
},
},
}),
],
output: {
path: outputDirectory,
filename: (pathData) =>
pathData.chunk?.name === "index"
? "index.js"
: `${pathData.chunk?.name}/index.js`,
library: {
type: "commonjs2",
},
},
externalsPresets: { node: true },
node: {
__dirname: true,
__filename: true,
},
module: {
rules: [
{
test: /\.ts(x)?$/,
loader: "ts-loader",
},
],
},
});