From 385e35a8adeae0e67cad73e6a17eb0abe0683a4d Mon Sep 17 00:00:00 2001 From: abhishekbhakat Date: Thu, 13 Mar 2025 08:00:45 +0000 Subject: [PATCH] Use webpack bundler --- .vscodeignore | 2 ++ package.json | 13 ++++++++---- tsconfig.webpack.json | 18 +++++++++++++++++ webpack.config.js | 46 +++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 75 insertions(+), 4 deletions(-) create mode 100644 tsconfig.webpack.json create mode 100644 webpack.config.js diff --git a/.vscodeignore b/.vscodeignore index 5d7beb3..42ad94e 100644 --- a/.vscodeignore +++ b/.vscodeignore @@ -8,6 +8,8 @@ src/** **/.eslintrc.json **/*.map **/*.ts +out/** +webpack.config.js .replit .breakpoints .local/** diff --git a/package.json b/package.json index 6cb2cf3..f5f7238 100644 --- a/package.json +++ b/package.json @@ -12,7 +12,7 @@ "Other" ], "activationEvents": [], - "main": "./out/extension.js", + "main": "./dist/extension.js", "contributes": { "commands": [ { @@ -68,9 +68,11 @@ } }, "scripts": { - "vscode:prepublish": "npm run compile", + "vscode:prepublish": "npm run webpack:prod", + "webpack:dev": "webpack --mode development", + "webpack:prod": "webpack --mode production", "compile": "tsc -p ./", - "watch": "tsc -watch -p ./", + "watch": "webpack --watch --mode development", "pretest": "npm run compile && npm run lint", "lint": "eslint src", "test": "vscode-test" @@ -84,7 +86,10 @@ "@vscode/test-cli": "^0.0.10", "@vscode/test-electron": "^2.4.1", "eslint": "^9.21.0", - "typescript": "^5.7.3" + "ts-loader": "^9.5.2", + "typescript": "^5.7.3", + "webpack": "^5.98.0", + "webpack-cli": "^6.0.1" }, "dependencies": { "@vscode/vsce": "^3.2.2", diff --git a/tsconfig.webpack.json b/tsconfig.webpack.json new file mode 100644 index 0000000..7549416 --- /dev/null +++ b/tsconfig.webpack.json @@ -0,0 +1,18 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "module": "commonjs", + "target": "ES2020", + "outDir": "dist", + "sourceMap": true, + "esModuleInterop": true + }, + "exclude": [ + "node_modules", + "src/test/**", + "**/*.test.ts" + ], + "include": [ + "src/**/*.ts" + ] +} diff --git a/webpack.config.js b/webpack.config.js new file mode 100644 index 0000000..3267e96 --- /dev/null +++ b/webpack.config.js @@ -0,0 +1,46 @@ +const path = require('path'); +const webpack = require('webpack'); + +/** + * @type {import('webpack').Configuration} + */ +const config = { + target: 'node', + mode: 'none', // Set to 'production' for minified output + + entry: { + main: './src/extension.ts' + }, + output: { + path: path.resolve(__dirname, 'dist'), + filename: 'extension.js', + libraryTarget: 'commonjs2', + devtoolModuleFilenameTemplate: '../[resource-path]' + }, + devtool: 'source-map', + externals: { + vscode: 'commonjs vscode' // The vscode module is created on-the-fly and must be excluded + }, + resolve: { + extensions: ['.ts', '.js'] + }, + module: { + rules: [ + { + test: /\.ts$/, + exclude: /node_modules|src\/test/, + use: [ + { + loader: 'ts-loader', + options: { + transpileOnly: true, + configFile: path.resolve(__dirname, './tsconfig.webpack.json') + } + } + ] + } + ] + } +}; + +module.exports = config;