diff --git a/.github/workflows/github-actions-vscode-extension.yml b/.github/workflows/github-actions-vscode-extension.yml index 9bc04c9e..6d83bea4 100644 --- a/.github/workflows/github-actions-vscode-extension.yml +++ b/.github/workflows/github-actions-vscode-extension.yml @@ -15,7 +15,7 @@ jobs: matrix: node-version: [12.14] os: [windows-latest, macos-latest, ubuntu-latest] - # fail-fast: false + fail-fast: false runs-on: ${{ matrix.os }} diff --git a/.gitignore b/.gitignore index 273a0901..c02027c1 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,5 @@ out +dist node_modules **/*.vsix npm-debug.log diff --git a/.vscode/extensions.json b/.vscode/extensions.json index fa156951..5b4dd2d7 100644 --- a/.vscode/extensions.json +++ b/.vscode/extensions.json @@ -10,6 +10,7 @@ "davidanson.vscode-markdownlint", "vscode-icons-team.vscode-icons", "animu5.vscode-file-header-comment", + "eamodio.tsl-problem-matcher", "msjsdiag.debugger-for-chrome", ], // List of extensions recommended by VS Code that should not be recommended for users of this workspace. diff --git a/.vscode/launch.json b/.vscode/launch.json index 3916e637..ca09c04b 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -13,9 +13,9 @@ "stopOnEntry": false, "sourceMaps": true, "outFiles": [ - "${workspaceFolder}/out/**/*.js" + "${workspaceFolder}/dist/**/*.js" ], - "preLaunchTask": "compile" + "preLaunchTask": "npm: webpack" }, { "name": "Launch Extension (skip views)", @@ -28,9 +28,9 @@ "stopOnEntry": false, "sourceMaps": true, "outFiles": [ - "${workspaceFolder}/out/**/*.js" + "${workspaceFolder}/dist/**/*.js" ], - "preLaunchTask": "compile - quick" + "preLaunchTask": "npm: webpack - quick" }, { "name": "Integration Tests", diff --git a/.vscode/tasks.json b/.vscode/tasks.json index 0cb3f344..c3310f6c 100644 --- a/.vscode/tasks.json +++ b/.vscode/tasks.json @@ -42,7 +42,7 @@ "reveal": "never" }, "problemMatcher": [ - "$tsc-watch" + "$ts-webpack" ] }, { diff --git a/.vscodeignore b/.vscodeignore index c471f2c2..331dc53a 100644 --- a/.vscodeignore +++ b/.vscodeignore @@ -23,6 +23,11 @@ coverage/ .nyc_output/ .github/ downloadVisJs.js + +webpack.config.js +node_modules +views/.eslintrc.js + how_to_contribute.md views/common/node_modules diff --git a/CHANGELOG.md b/CHANGELOG.md index b056db50..b7dad794 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,9 @@ # PDDL support - What's new? +## [Unreleased] + +- Faster start-up time due to migration to Webpack. Please report any errors that fell through my week of hands-on usage/testing. + ## 2.20.3 ### Initial state visualization diff --git a/package.json b/package.json index 3b87aef8..3c19d8a1 100644 --- a/package.json +++ b/package.json @@ -45,7 +45,7 @@ "onView:pddl.tests.explorer", "onUri" ], - "main": "./out/extension", + "main": "./dist/extension", "contributes": { "languages": [ { @@ -988,8 +988,10 @@ "compile": "tsc -p ./ && copyfiles --flat ./src/planView/model/package.json ./out/planView/model/ && copyfiles --flat ./src/modelView/model/package.json ./out/modelView/model/ && cd views/common && npm run compile && cd ../searchview && npm run compile && cd ../planview && npm run compile && cd ../modelView && npm run compile && cd ../..", "watch": "tsc -w -p ./", "lint": "eslint src --ext ts", - "vscode:prepublish": "npm run compile", + "vscode:prepublish": "webpack --mode production", "update-vscode": "node ./node_modules/vscode/bin/install", + "webpack": "webpack --mode development", + "webpack-dev": "webpack --mode development --watch", "package": "vsce package", "pretest": "npm run compile", "test:unit": "mocha -- out/test/**/*Test.js && cd views/searchview && npm test && cd ../..", @@ -1040,9 +1042,12 @@ "minimist": ">=0.2.1", "mocha": "^8.2.0", "tmp-promise": "^2.0.2", + "ts-loader": "^7.0.3", "typescript": "^4.1.3", "vsce": "^1.80.0", "vscode-codicons": "0.0.12", - "vscode-test": "^1.0.0" + "vscode-test": "^1.0.0", + "webpack": "^4.43.0", + "webpack-cli": "^3.3.11" } } diff --git a/webpack.config.js b/webpack.config.js new file mode 100644 index 00000000..a62b6fef --- /dev/null +++ b/webpack.config.js @@ -0,0 +1,43 @@ +//@ts-check + +'use strict'; + +const path = require('path'); + +/** @type {import('webpack').Configuration} */ +const config = { + target: 'node', + entry: './src/extension.ts', + output: { + path: path.resolve(__dirname, 'dist'), + filename: 'extension.js', + libraryTarget: "commonjs2", + devtoolModuleFilenameTemplate: '../[resource-path]' + }, + devtool: 'source-map', + externals: { + vscode: 'commonjs vscode' // todo: anything else? + }, + resolve: { + extensions: ['.ts', '.js'] + }, + module: { + rules: [ + { + test: /\.ts$/, + exclude: /node_modules/, + use: [ + { + loader: 'ts-loader', + /*options: { + compilerOptions: { + "module": "es6" // override `tsconfig.json` so that TypeScript emits native JavaScript modules. + } + }*/ + } + ] + } + ] + } +}; +module.exports = config;