From 6b0fbb153da41983fdd2ee087ef6bc94ed55e6f6 Mon Sep 17 00:00:00 2001 From: Sebastian Malton Date: Wed, 18 May 2022 16:49:09 -0400 Subject: [PATCH] Generate @k8slens/extensions via tsc only - This method only produces the relavent .d.ts files Signed-off-by: Sebastian Malton --- package.json | 2 +- tsconfig.extension-api.json | 47 ++++++++++++++++++++++ webpack/extensions.ts | 77 ------------------------------------- 3 files changed, 48 insertions(+), 78 deletions(-) create mode 100644 tsconfig.extension-api.json delete mode 100644 webpack/extensions.ts diff --git a/package.json b/package.json index 4fb0bcf94a..d06dd29243 100644 --- a/package.json +++ b/package.json @@ -21,7 +21,7 @@ "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:extension-types": "yarn run tsc --project tsconfig.extension-api.json", "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", diff --git a/tsconfig.extension-api.json b/tsconfig.extension-api.json new file mode 100644 index 0000000000..f3c73d1ef7 --- /dev/null +++ b/tsconfig.extension-api.json @@ -0,0 +1,47 @@ +{ + "compilerOptions": { + "baseUrl": ".", + "jsx": "react", + "target": "ES2019", + "module": "ESNext", + "lib": [ + "ESNext", + "DOM", + "DOM.Iterable" + ], + "moduleResolution": "Node", + "strict": true, + "experimentalDecorators": true, + "emitDecoratorMetadata": true, + "isolatedModules": true, + "skipLibCheck": true, + "allowJs": false, + "esModuleInterop": true, + "allowSyntheticDefaultImports": true, + "importsNotUsedAsValues": "error", + "traceResolution": false, + "resolveJsonModule": true, + "useDefineForClassFields": true, + "paths": { + "*": [ + "node_modules/*", + "types/*" + ] + }, + "plugins": [ + { + "name": "typescript-plugin-css-modules" + } + ], + "emitDeclarationOnly": true, + "noEmitOnError": true, + "declaration": true, + "declarationDir": "./src/extensions/npm/extensions/dist", + }, + "include": [ + "types/*.d.ts", + ], + "files": [ + "./src/extensions/extension-api.ts", + ], +} diff --git a/webpack/extensions.ts b/webpack/extensions.ts deleted file mode 100644 index 961c1d3bf2..0000000000 --- a/webpack/extensions.ts +++ /dev/null @@ -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 - 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', - // }) - ], - }; -}