Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Remove webpack.*.ts importing values from src/ #4992

Merged
merged 3 commits into from
Apr 13, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 4 additions & 4 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -17,11 +17,11 @@
"debug-build": "concurrently yarn:compile:main yarn:compile:extension-types",
"dev-run": "nodemon --watch ./static/build/main.js --exec \"electron --remote-debugging-port=9223 --inspect .\"",
"dev:main": "yarn run compile:main --watch --progress",
"dev:renderer": "yarn run ts-node webpack.dev-server.ts",
"dev:renderer": "yarn run ts-node webpack/dev-server.ts",
"compile": "env NODE_ENV=production concurrently yarn:compile:*",
"compile:main": "yarn run webpack --config webpack.main.ts",
"compile:renderer": "yarn run webpack --config webpack.renderer.ts",
"compile:extension-types": "yarn run webpack --config webpack.extensions.ts",
"compile:main": "yarn run webpack --config webpack/main.ts",
"compile:renderer": "yarn run webpack --config webpack/renderer.ts",
"compile:extension-types": "yarn run webpack --config webpack/extensions.ts",
"npm:fix-build-version": "yarn run ts-node build/set_build_version.ts",
"npm:fix-package-version": "yarn run ts-node build/set_npm_version.ts",
"build:linux": "yarn run compile && electron-builder --linux --dir",
Expand Down
18 changes: 0 additions & 18 deletions src/common/utils/defineGlobal.ts

This file was deleted.

1 change: 0 additions & 1 deletion src/common/utils/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,6 @@ export * from "./collection-functions";
export * from "./convertCpu";
export * from "./convertMemory";
export * from "./debouncePromise";
export * from "./defineGlobal";
export * from "./delay";
export * from "./disposer";
export * from "./downloadFile";
Expand Down
29 changes: 6 additions & 23 deletions src/common/vars.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@
import path from "path";
import { SemVer } from "semver";
import packageInfo from "../../package.json";
import { defineGlobal } from "./utils/defineGlobal";
import { lazyInitialized } from "./utils/lazy-initialized";

export const isMac = process.platform === "darwin";
Expand Down Expand Up @@ -101,26 +100,12 @@ export const kubectlBinaryName = getBinaryName("kubectl");
* @deprecated for being explicit side effect.
*/
export const kubectlBinaryPath = lazyInitialized(() => path.join(baseBinariesDir.get(), kubectlBinaryName));

// Webpack build paths
export const contextDir = process.cwd();
export const buildDir = path.join(contextDir, "static", publicPath);
export const preloadEntrypoint = path.join(contextDir, "src/preload.ts");
export const mainDir = path.join(contextDir, "src/main");
export const rendererDir = path.join(contextDir, "src/renderer");
export const htmlTemplate = path.resolve(rendererDir, "template.html");
export const sassCommonVars = path.resolve(rendererDir, "components/vars.scss");

// Special runtime paths
defineGlobal("__static", {
get() {
const root = isDevelopment
? contextDir
: (process.resourcesPath ?? contextDir);

return path.resolve(root, "static");
},
});
export const staticFilesDirectory = path.resolve(
!isProduction
? process.cwd()
: process.resourcesPath,
"static",
);

// Apis
export const apiPrefix = "/api" as string; // local router apis
Expand All @@ -142,5 +127,3 @@ export const appSemVer = new SemVer(packageInfo.version);
export const docsUrl = "https://docs.k8slens.dev/main/" as string;

export const sentryDsn = packageInfo.config?.sentryDsn ?? "";

export const webpackDevServerPort: number = Number(process.env.WEBPACK_DEV_SERVER_PORT) || 9191;
13 changes: 0 additions & 13 deletions src/common/vars/context-dir.injectable.ts

This file was deleted.

4 changes: 2 additions & 2 deletions src/extensions/extension-discovery/extension-discovery.ts
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ import logger from "../../main/logger";
import type { ExtensionsStore } from "../extensions-store/extensions-store";
import type { ExtensionLoader } from "../extension-loader";
import type { LensExtensionId, LensExtensionManifest } from "../lens-extension";
import { isProduction } from "../../common/vars";
import { isProduction, staticFilesDirectory } from "../../common/vars";
import type { ExtensionInstallationStateStore } from "../extension-installation-state-store/extension-installation-state-store";
import type { PackageJson } from "type-fest";
import { extensionDiscoveryStateChannel } from "../../common/ipc/extension-handling";
Expand Down Expand Up @@ -112,7 +112,7 @@ export class ExtensionDiscovery {
}

get inTreeFolderPath(): string {
return path.resolve(__static, "../extensions");
return path.resolve(staticFilesDirectory, "../extensions");
}

get nodeModulesPath(): string {
Expand Down
4 changes: 2 additions & 2 deletions src/main/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ import httpProxy from "http-proxy";
import * as LensExtensionsCommonApi from "../extensions/common-api";
import * as LensExtensionsMainApi from "../extensions/main-api";
import { app, autoUpdater, dialog, powerMonitor } from "electron";
import { appName, isIntegrationTesting, isMac, isWindows, productName } from "../common/vars";
import { appName, isIntegrationTesting, isMac, isWindows, productName, staticFilesDirectory } from "../common/vars";
import { LensProxy } from "./lens-proxy";
import { WindowManager } from "./window-manager";
import { ClusterManager } from "./cluster-manager";
Expand Down Expand Up @@ -198,7 +198,7 @@ async function main(di: DiContainer) {

powerMonitor.on("shutdown", () => app.exit());

registerFileProtocol("static", __static);
registerFileProtocol("static", staticFilesDirectory);

PrometheusProviderRegistry.createInstance();
initializers.initPrometheusProviderRegistry();
Expand Down
3 changes: 0 additions & 3 deletions src/main/router/router.ts
Original file line number Diff line number Diff line change
Expand Up @@ -11,9 +11,6 @@ import type { Cluster } from "../../common/cluster/cluster";
import type { LensApiResultContentType } from "./router-content-types";
import { contentTypes } from "./router-content-types";

// TODO: Import causes side effect, sets value for __static
import "../../common/vars";

export interface RouterRequestOpts {
req: http.IncomingMessage;
res: http.ServerResponse;
Expand Down
5 changes: 3 additions & 2 deletions src/main/routes/static-file-route.injectable.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ import type { SupportedFileExtension } from "../router/router-content-types";
import { contentTypes } from "../router/router-content-types";
import logger from "../logger";
import { routeInjectionToken } from "../router/router.injectable";
import { appName, publicPath, webpackDevServerPort } from "../../common/vars";
import { appName, publicPath, staticFilesDirectory } from "../../common/vars";
import path from "path";
import isDevelopmentInjectable from "../../common/vars/is-development.injectable";
import httpProxy from "http-proxy";
Expand All @@ -17,6 +17,7 @@ import type { GetAbsolutePath } from "../../common/path/get-absolute-path.inject
import getAbsolutePathInjectable from "../../common/path/get-absolute-path.injectable";
import type { JoinPaths } from "../../common/path/join-paths.injectable";
import joinPathsInjectable from "../../common/path/join-paths.injectable";
import { webpackDevServerPort } from "../../../webpack/vars";

interface ProductionDependencies {
readFileBuffer: (path: string) => Promise<Buffer>;
Expand All @@ -27,7 +28,7 @@ interface ProductionDependencies {
const handleStaticFileInProduction =
({ readFileBuffer, getAbsolutePath, joinPaths }: ProductionDependencies) =>
async ({ params }: LensApiRequest) => {
const staticPath = getAbsolutePath(__static);
const staticPath = getAbsolutePath(staticFilesDirectory);
let filePath = params.path;

for (let retryCount = 0; retryCount < 5; retryCount += 1) {
Expand Down
4 changes: 2 additions & 2 deletions src/main/tray/tray.ts
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ import { showAbout } from "../menu/menu";
import { checkForUpdates, isAutoUpdateEnabled } from "../app-updater";
import type { WindowManager } from "../window-manager";
import logger from "../logger";
import { isDevelopment, isWindows, productName } from "../../common/vars";
import { isDevelopment, isWindows, productName, staticFilesDirectory } from "../../common/vars";
import { exitApp } from "../exit-app";
import { toJS } from "../../common/utils";
import type { TrayMenuRegistration } from "./tray-menu-registration";
Expand All @@ -25,7 +25,7 @@ export let tray: Tray;

export function getTrayIcon(): string {
return path.resolve(
__static,
staticFilesDirectory,
isDevelopment ? "../build/tray" : "icons", // copied within electron-builder extras
"trayIconTemplate.png",
);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
import { getInjectable } from "@ogre-tools/injectable";
import path from "path";
import { hasCorrectExtension } from "./has-correct-extension";
import "../../../../common/vars";
import { staticFilesDirectory } from "../../../../common/vars";
import readFileInjectable from "../../../../common/fs/read-file.injectable";
import readDirInjectable from "../../../../common/fs/read-dir.injectable";
import type { RawTemplates } from "./create-resource-templates.injectable";
Expand All @@ -19,7 +19,7 @@ interface Dependencies {
}

async function getTemplates({ readDir, readFile, getAbsolutePath }: Dependencies) {
const templatesFolder = getAbsolutePath(__static, "../templates/create-resource");
const templatesFolder = getAbsolutePath(staticFilesDirectory, "../templates/create-resource");

/**
* Mapping between file names and their contents
Expand Down
8 changes: 6 additions & 2 deletions tsconfig.json
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,11 @@
"types/*"
]
},
"plugins": [{ "name": "typescript-plugin-css-modules" }]
"plugins": [
{
"name": "typescript-plugin-css-modules"
}
]
Comment on lines +35 to +39
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This probably could be removed (css-modules supported by webpack's css-loader)

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I believe this is here to support intellisense for css modules.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nope, it doesn't. For VScode you still have to install some plugin.
Recommended extension: https://marketplace.visualstudio.com/items?itemName=phoenisx.cssvar

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

},
"ts-node": {
"transpileOnly": true,
Expand All @@ -42,7 +46,7 @@
},
"include": [
"src/**/*",
"types/*.d.ts"
"types/*.d.ts",
],
"exclude": [
"node_modules",
Expand Down
3 changes: 0 additions & 3 deletions types/mocks.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,9 +8,6 @@ declare module "win-ca/api"
declare module "@hapi/call"
declare module "@hapi/subtext"

// Global path to static assets
declare const __static: string;

// Support import for custom module extensions
// https://www.typescriptlang.org/docs/handbook/modules.html#wildcard-module-declarations
declare module "*.module.scss" {
Expand Down
54 changes: 0 additions & 54 deletions webpack.dev-server.ts

This file was deleted.

47 changes: 47 additions & 0 deletions webpack/dev-server.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
/**
* Copyright (c) OpenLens Authors. All rights reserved.
* Licensed under MIT License. See LICENSE in root directory for more information.
*/

import Webpack from "webpack";
import WebpackDevServer from "webpack-dev-server";
import { webpackLensRenderer } from "./renderer";
import logger from "../src/common/logger";
import { buildDir, webpackDevServerPort } from "./vars";

/**
* API docs:
* @url https://webpack.js.org/configuration/dev-server/
* @url https://github.com/chimurai/http-proxy-middleware
*/
const config = webpackLensRenderer({ showVars: false });
const compiler = Webpack(config);

const server = new WebpackDevServer({
setupExitSignals: true,
headers: {
"Access-Control-Allow-Origin": "*",
},
allowedHosts: "all",
host: "localhost",
port: webpackDevServerPort,
static: buildDir, // aka `devServer.contentBase` in webpack@4
hot: "only", // use HMR only without errors
liveReload: false,
devMiddleware: {
writeToDisk: false,
index: "OpenLensDev.html",
publicPath: "/build",
},
proxy: {
"^/$": "/build/",
},
client: {
overlay: false, // don't show warnings and errors on top of rendered app view
logging: "error",
},
}, compiler);

logger.info(`[WEBPACK-DEV-SERVER]: created with options`, server.options);

server.start();
14 changes: 5 additions & 9 deletions webpack.extensions.ts → webpack/extensions.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,25 +6,21 @@

import path from "path";
import type webpack from "webpack";
import * as vars from "./src/common/vars";
import { cssModulesWebpackRule, fontsLoaderWebpackRules, iconsAndImagesWebpackRules } from "./webpack.renderer";
import { cssModulesWebpackRule, fontsLoaderWebpackRules, iconsAndImagesWebpackRules } from "./renderer";
import { extensionEntry, extensionOutDir, isDevelopment } from "./vars";

export default function generateExtensionTypes(): webpack.Configuration {
const { isDevelopment } = vars;
const entry = "./src/extensions/extension-api.ts";
const outDir = "./src/extensions/npm/extensions/dist";

return {
// Compile for Electron for renderer process
// see <https://webpack.js.org/configuration/target/>
target: "electron-renderer",
entry,
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(__dirname, `${outDir}/src/extensions`),
path: path.resolve(extensionOutDir, "src", "extensions"),
ixrock marked this conversation as resolved.
Show resolved Hide resolved
// can be use in commonjs environments
// e.g. require('@k8slens/extensions')
libraryTarget: "commonjs",
Expand Down Expand Up @@ -54,7 +50,7 @@ export default function generateExtensionTypes(): webpack.Configuration {
compilerOptions: {
declaration: true, // output .d.ts
sourceMap: false, // to override sourceMap: true in tsconfig.json
outDir, // where the .d.ts should be located
outDir: extensionOutDir, // where the .d.ts should be located
},
},
},
Expand Down
Loading