Skip to content

Commit ce5a814

Browse files
fix: replace webpack with esbuild which solved crashing (#581)
* fix: replace webpack with esbuild which solved crashing * fix: changeset is added and minor corrections * fix: esbuild scripts optimization * fix: enable github action build job for pull requests * fix: change set update * fix: fixed server crash with trace log level, node version update for esbuild * fix: webpack configs removed --------- Co-authored-by: Vadim Koblov <[email protected]>
1 parent facfad2 commit ce5a814

File tree

16 files changed

+250
-483
lines changed

16 files changed

+250
-483
lines changed

.changeset/honest-baboons-brush.md

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
---
2+
"vscode-ui5-language-assistant": patch
3+
"@ui5-language-assistant/language-server": patch
4+
"@ui5-language-assistant/vscode-ui5-language-assistant-bas-ext": patch
5+
---
6+
7+
Switching from webpack to esbuild for bundling the code
8+
Fix GitHub action build job to run build and tests on pull requests to master

.github/workflows/release.yaml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@ env:
1212

1313
jobs:
1414
build:
15-
if: github.ref == 'refs/heads/master' # to filter out tag pushes
1615
strategy:
1716
matrix:
1817
os: [ubuntu-latest]

esbuild.js

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
async function builder(options) {
2+
const buildConfig = {
3+
...{
4+
logLevel: "info",
5+
write: true,
6+
format: "cjs",
7+
bundle: true,
8+
metafile: true,
9+
sourcemap: true, // .vscodeignore ignores .map files when bundling!!
10+
mainFields: ["module", "main"], // https://stackoverflow.com/a/69352281
11+
minify: true,
12+
loader: {
13+
".jpg": "file",
14+
".gif": "file",
15+
".mp4": "file",
16+
".graphql": "text",
17+
".png": "file",
18+
".svg": "file",
19+
},
20+
platform: "node",
21+
target: "node14",
22+
},
23+
...options,
24+
};
25+
26+
if (process.argv.slice(2).includes("--watch")) {
27+
console.log("Applyin watch config");
28+
buildConfig.watch = true;
29+
buildConfig.minify = false;
30+
}
31+
32+
require("esbuild")
33+
.build(buildConfig)
34+
.catch((error) => {
35+
console.log(error);
36+
process.exit(1);
37+
});
38+
}
39+
40+
module.exports = { builder };

package.json

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -78,8 +78,7 @@
7878
"sinon-chai": "3.5.0",
7979
"source-map-support": "0.5.19",
8080
"typescript": "3.9.7",
81-
"webpack": "5.76.0",
82-
"webpack-cli": "4.4.0"
81+
"esbuild": "0.17.12"
8382
},
8483
"lint-staged": {
8584
"*.{js,ts,md,json}": [

packages/language-server/esbuild.js

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
const { join } = require("path");
2+
const { builder } = require("../../esbuild");
3+
4+
builder({
5+
outfile: "dist/server.js",
6+
entryPoints: [join(process.cwd(), "src/server.ts")],
7+
});

packages/language-server/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,6 @@
6464
"test": "mocha",
6565
"coverage": "nyc mocha",
6666
"update-snapshots": "node ./scripts/update-diagnostics-snapshots",
67-
"bundle": "webpack --mode production"
67+
"bundle": "node esbuild.js"
6868
}
6969
}

packages/language-server/src/api.ts

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,12 @@ import { resolve } from "path";
22
import { existsSync } from "fs";
33

44
// for use in productive flows
5-
const bundledPath = resolve(__dirname, "..", "..", "dist", "server.js");
5+
const bundledPath = resolve(
6+
__dirname,
7+
"..",
8+
"node_modules/@ui5-language-assistant/language-server/dist",
9+
"server.js"
10+
);
611

712
const sourcesPath = resolve(__dirname, "server.js");
813

packages/language-server/src/logger.ts

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,17 @@ import {
44
LogLevel,
55
ILogger,
66
} from "@ui5-language-assistant/logic-utils";
7-
7+
import { join } from "path";
8+
import { readJsonSync } from "fs-extra";
89
const getPackageName = (): string => {
9-
// eslint-disable-next-line @typescript-eslint/no-var-requires -- Using `require` for .json file as this gets bundled with webpack correctly.
10-
const meta = require("../../package.json");
11-
return meta.name;
10+
let meta;
11+
try {
12+
// in production - ../extensions/saposs.vscode-ui5-language-assistant-4.0.6/node_modules/@ui5-language-assistant/language-server/dist
13+
meta = readJsonSync(join(__dirname, "..", "package.json"));
14+
} catch (error) {
15+
meta = readJsonSync(join(__dirname, "..", "..", "package.json"));
16+
}
17+
return meta?.name;
1218
};
1319

1420
const name = getPackageName();

packages/language-server/src/server.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -292,7 +292,9 @@ connection.onDidChangeWatchedFiles(async (changeEvent) => {
292292

293293
documents.onDidChangeContent(
294294
async (changeEvent): Promise<void> => {
295-
getLogger().trace("`onDidChangeContent` event", { changeEvent });
295+
getLogger().trace("`onDidChangeContent` event", {
296+
...changeEvent.document,
297+
});
296298
if (
297299
manifestStateInitialized === undefined ||
298300
ui5yamlStateInitialized === undefined ||

packages/language-server/webpack.config.js

Lines changed: 0 additions & 34 deletions
This file was deleted.
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
const { join } = require("path");
2+
const { builder } = require("../../esbuild");
3+
4+
builder({
5+
outfile: "dist/extension.js",
6+
entryPoints: [join(process.cwd(), "src/extension.ts")],
7+
external: [
8+
"vscode", // the vscode-module is created on-the-fly and must be excluded. Add other modules that cannot be webpack'ed, 📖 -> https://webpack.js.org/configuration/externals/
9+
],
10+
});

packages/vscode-ui5-language-assistant/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -96,7 +96,7 @@
9696
"test:unit": "mocha --config=./test/unit/.mocharc.js",
9797
"coverage:integration": "nyc node lib/test/run-integration-tests.js",
9898
"coverage:unit": "nyc mocha --config=./test/unit/.mocharc.js",
99-
"bundle": "webpack --mode production",
99+
"bundle": "node esbuild.js",
100100
"package": "node ./scripts/package-vsix"
101101
},
102102
"dependencies": {

packages/vscode-ui5-language-assistant/src/logger.ts

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,18 @@ import {
22
getLogger as logger,
33
ILogger,
44
} from "@ui5-language-assistant/logic-utils";
5+
import { join } from "path";
6+
import { readJsonSync } from "fs-extra";
57

68
const getPackageName = (): string => {
7-
// eslint-disable-next-line @typescript-eslint/no-var-requires -- Using `require` for .json file as this gets bundled with webpack correctly.
8-
const meta = require("../../package.json");
9-
return meta.name;
9+
let meta;
10+
try {
11+
// in production - ../extensions/saposs.vscode-ui5-language-assistant-4.0.6/dist which equals to vscode-ui5-language-assistant/dist
12+
meta = readJsonSync(join(__dirname, "..", "package.json"));
13+
} catch (error) {
14+
meta = readJsonSync(join(__dirname, "..", "..", "package.json"));
15+
}
16+
return meta?.name;
1017
};
1118

1219
const name = getPackageName();

packages/vscode-ui5-language-assistant/webpack.config.js

Lines changed: 0 additions & 24 deletions
This file was deleted.

webpack.config.base.js

Lines changed: 0 additions & 25 deletions
This file was deleted.

0 commit comments

Comments
 (0)