mirror of
https://github.com/lensapp/lens.git
synced 2025-05-20 05:10:56 +00:00
fix core webpack configs
Signed-off-by: Jari Kolehmainen <jari.kolehmainen@gmail.com>
This commit is contained in:
parent
d36f963b12
commit
f9244ef035
@ -1,77 +0,0 @@
|
|||||||
/**
|
|
||||||
* Copyright (c) OpenLens Authors. All rights reserved.
|
|
||||||
* Licensed under MIT License. See LICENSE in root directory for more information.
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
||||||
import path from "path";
|
|
||||||
import type webpack from "webpack";
|
|
||||||
import { cssModulesWebpackRule, fontsLoaderWebpackRules, iconsAndImagesWebpackRules } from "./renderer";
|
|
||||||
import { extensionEntry, extensionOutDir, isDevelopment } from "./vars";
|
|
||||||
|
|
||||||
export default function generateExtensionTypes(): webpack.Configuration {
|
|
||||||
return {
|
|
||||||
// Compile for Electron for renderer process
|
|
||||||
// see <https://webpack.js.org/configuration/target/>
|
|
||||||
target: "electron-renderer",
|
|
||||||
entry: extensionEntry,
|
|
||||||
// this is the default mode, so we should make it explicit to silence the warning
|
|
||||||
mode: isDevelopment ? "development" : "production",
|
|
||||||
output: {
|
|
||||||
filename: "extension-api.js",
|
|
||||||
// need to be an absolute path
|
|
||||||
path: path.resolve(extensionOutDir, "src", "extensions"),
|
|
||||||
// can be use in commonjs environments
|
|
||||||
// e.g. require('@k8slens/extensions')
|
|
||||||
libraryTarget: "commonjs",
|
|
||||||
},
|
|
||||||
cache: isDevelopment,
|
|
||||||
optimization: {
|
|
||||||
minimize: false, // speed up types compilation
|
|
||||||
},
|
|
||||||
ignoreWarnings: [
|
|
||||||
/Critical dependency: the request of a dependency is an expression/, // see who is using request: "npm ls request"
|
|
||||||
/require.extensions is not supported by webpack./, // handlebars
|
|
||||||
],
|
|
||||||
stats: "errors-warnings",
|
|
||||||
module: {
|
|
||||||
rules: [
|
|
||||||
{
|
|
||||||
test: /\.node$/,
|
|
||||||
loader: "ignore-loader",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
test: /\.tsx?$/,
|
|
||||||
loader: "ts-loader",
|
|
||||||
options: {
|
|
||||||
// !! ts-loader will use tsconfig.json at folder root
|
|
||||||
// !! changes in tsconfig.json may have side effects
|
|
||||||
// !! on '@k8slens/extensions' module
|
|
||||||
compilerOptions: {
|
|
||||||
declaration: true, // output .d.ts
|
|
||||||
sourceMap: false, // to override sourceMap: true in tsconfig.json
|
|
||||||
outDir: extensionOutDir, // where the .d.ts should be located
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
cssModulesWebpackRule({ styleLoader: "style-loader" }),
|
|
||||||
...fontsLoaderWebpackRules(),
|
|
||||||
...iconsAndImagesWebpackRules(),
|
|
||||||
],
|
|
||||||
},
|
|
||||||
resolve: {
|
|
||||||
extensions: [".ts", ".tsx", ".js"],
|
|
||||||
},
|
|
||||||
plugins: [
|
|
||||||
// In ts-loader's README they said to output a built .d.ts file,
|
|
||||||
// you can set "declaration": true in tsconfig.extensions.json,
|
|
||||||
// and use the DeclarationBundlerPlugin in your webpack config... but
|
|
||||||
// !! the DeclarationBundlerPlugin doesn't work anymore, author archived it.
|
|
||||||
// https://www.npmjs.com/package/declaration-bundler-webpack-plugin
|
|
||||||
// new DeclarationBundlerPlugin({
|
|
||||||
// moduleName: '@k8slens/extensions',
|
|
||||||
// out: 'extension-api.d.ts',
|
|
||||||
// })
|
|
||||||
],
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@ -5,13 +5,10 @@
|
|||||||
import MiniCssExtractPlugin from "mini-css-extract-plugin";
|
import MiniCssExtractPlugin from "mini-css-extract-plugin";
|
||||||
import { platform } from "os";
|
import { platform } from "os";
|
||||||
import path from "path";
|
import path from "path";
|
||||||
import type { WebpackPluginInstance } from "webpack";
|
|
||||||
import { DefinePlugin, optimize } from "webpack";
|
import { DefinePlugin, optimize } from "webpack";
|
||||||
import main from "./main";
|
import main from "./main";
|
||||||
import renderer from "./renderer";
|
import renderer, { cssModulesWebpackRule, fontsLoaderWebpackRules, iconsAndImagesWebpackRules } from "./renderer";
|
||||||
import { buildDir } from "./vars";
|
import { buildDir } from "./vars";
|
||||||
import CircularDependencyPlugin from "circular-dependency-plugin";
|
|
||||||
import ForkTsCheckerPlugin from "fork-ts-checker-webpack-plugin";
|
|
||||||
|
|
||||||
const rendererConfig = renderer({ showVars: false });
|
const rendererConfig = renderer({ showVars: false });
|
||||||
|
|
||||||
@ -30,16 +27,38 @@ const config = [
|
|||||||
optimization: {
|
optimization: {
|
||||||
minimize: false,
|
minimize: false,
|
||||||
},
|
},
|
||||||
|
module: {
|
||||||
|
parser: {
|
||||||
|
javascript: {
|
||||||
|
commonjsMagicComments: true,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
rules: [
|
||||||
|
{
|
||||||
|
test: /\.node$/,
|
||||||
|
use: "node-loader",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
test: /\.ts$/,
|
||||||
|
exclude: /node_modules/,
|
||||||
|
use: {
|
||||||
|
loader: "ts-loader",
|
||||||
|
options: {
|
||||||
|
compilerOptions: {
|
||||||
|
declaration: true,
|
||||||
|
sourceMap: false,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
},
|
||||||
|
},
|
||||||
|
...iconsAndImagesWebpackRules(),
|
||||||
|
],
|
||||||
|
},
|
||||||
plugins: [
|
plugins: [
|
||||||
new DefinePlugin({
|
new DefinePlugin({
|
||||||
CONTEXT_MATCHER_FOR_NON_FEATURES: `/\\.injectable(\\.${platform})?\\.tsx?$/`,
|
CONTEXT_MATCHER_FOR_NON_FEATURES: `/\\.injectable(\\.${platform})?\\.tsx?$/`,
|
||||||
CONTEXT_MATCHER_FOR_FEATURES: `/\\/(main|common)\\/.+\\.injectable(\\.${platform})?\\.tsx?$/`,
|
CONTEXT_MATCHER_FOR_FEATURES: `/\\/(main|common)\\/.+\\.injectable(\\.${platform})?\\.tsx?$/`,
|
||||||
}),
|
}),
|
||||||
new CircularDependencyPlugin({
|
|
||||||
cwd: __dirname,
|
|
||||||
exclude: /node_modules/,
|
|
||||||
failOnError: true,
|
|
||||||
}) as unknown as WebpackPluginInstance,
|
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -57,14 +76,7 @@ const config = [
|
|||||||
optimization: {
|
optimization: {
|
||||||
minimize: false,
|
minimize: false,
|
||||||
},
|
},
|
||||||
plugins: [
|
plugins: [],
|
||||||
new ForkTsCheckerPlugin(),
|
|
||||||
new CircularDependencyPlugin({
|
|
||||||
cwd: __dirname,
|
|
||||||
exclude: /node_modules/,
|
|
||||||
failOnError: true,
|
|
||||||
}) as unknown as WebpackPluginInstance,
|
|
||||||
],
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
...rendererConfig,
|
...rendererConfig,
|
||||||
@ -96,12 +108,6 @@ const config = [
|
|||||||
new optimize.LimitChunkCountPlugin({
|
new optimize.LimitChunkCountPlugin({
|
||||||
maxChunks: 1,
|
maxChunks: 1,
|
||||||
}),
|
}),
|
||||||
new ForkTsCheckerPlugin(),
|
|
||||||
new CircularDependencyPlugin({
|
|
||||||
cwd: __dirname,
|
|
||||||
exclude: /node_modules/,
|
|
||||||
failOnError: true,
|
|
||||||
}) as unknown as WebpackPluginInstance,
|
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
];
|
];
|
||||||
|
|||||||
@ -1,3 +1,6 @@
|
|||||||
{
|
{
|
||||||
"extends": "../tsconfig.json"
|
"extends": "../tsconfig.json",
|
||||||
|
"compilerOptions": {
|
||||||
|
"rootDir": ".."
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user