Skip to content

Commit 0f6c011

Browse files
committed
feat: support config
1 parent bf627ac commit 0f6c011

34 files changed

+2764
-3461
lines changed

.editorconfig

+6
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
root = true
2+
3+
[*]
4+
indent_size = 2
5+
end_of_line = lf
6+
insert_final_newline = true

.gitignore

+1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
out
22
dist
33
node_modules
4+
.eslintcache
45
*.tsbuildinfo
56
*.vsix

.vscode/launch.json

+2-1
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,10 @@
77
"type": "extensionHost",
88
"request": "launch",
99
"runtimeExecutable": "${execPath}",
10+
"autoAttachChildProcesses": true,
1011
"args": [
1112
"--extensionDevelopmentPath=${workspaceRoot}/packages/vscode",
12-
"--folder-uri=${workspaceRoot}/sample"
13+
"--folder-uri=${workspaceRoot}/playground"
1314
],
1415
"outFiles": ["${workspaceRoot}/packages/vscode/dist/*.js"],
1516
"preLaunchTask": {

README.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ Same with the article, this template uses .html1 as an example to implement embe
1313
- pnpm: monorepo support
1414
- esbuild: bundle extension
1515

16-
## Running the Sample
16+
## Running the Playground
1717

1818
- Run `pnpm install` in this folder. This installs all necessary npm modules in both the client and server folder
1919
- Open VS Code on this folder.

eslint.config.ts

+2-3
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
// @ts-check
2-
import { sxzz } from "@sxzz/eslint-config";
1+
import { sxzz } from '@sxzz/eslint-config'
32

4-
export default sxzz();
3+
export default sxzz()

package.json

+6-2
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,8 @@
66
"url": "https://github.com/volarjs/starter.git"
77
},
88
"scripts": {
9-
"build": "cd ./packages/vscode && npm run build",
9+
"dev": "pnpm run --filter=\"./packages/*\" --parallel dev",
10+
"build": "pnpm run --filter=\"./packages/*\" --parallel build",
1011
"watch": "cd ./packages/vscode && npm run watch",
1112
"pack": "cd ./packages/vscode && npm run pack",
1213
"lint": "eslint --max-warnings 0 --cache --flag unstable_ts_config .",
@@ -15,10 +16,13 @@
1516
},
1617
"devDependencies": {
1718
"@sxzz/eslint-config": "^4.4.0",
19+
"@sxzz/prettier-config": "^2.0.2",
1820
"@types/node": "^22.8.1",
1921
"eslint": "^9.13.0",
2022
"jiti": "^2.3.3",
2123
"prettier": "^3.3.3",
24+
"tsup": "^8.3.5",
2225
"typescript": "^5.6.3"
23-
}
26+
},
27+
"prettier": "@sxzz/prettier-config"
2428
}
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
#!/usr/bin/env node
2-
if (require("node:process").argv.includes("--version")) {
3-
const pkgJSON = require("../package.json");
2+
if (require('node:process').argv.includes('--version')) {
3+
const pkgJSON = require('../package.json')
44
// eslint-disable-next-line no-console
5-
console.log(String(pkgJSON.version));
5+
console.log(String(pkgJSON.version))
66
} else {
7-
require("../out/index.js");
7+
require('../dist/index.js')
88
}

packages/language-server/package.json

+18-15
Original file line numberDiff line numberDiff line change
@@ -1,29 +1,32 @@
11
{
2-
"name": "@tsm/language-server",
2+
"name": "@ts-macro/language-server",
33
"version": "0.0.1",
44
"license": "MIT",
55
"files": [
6-
"out/**/*.d.ts",
7-
"out/**/*.js"
6+
"dist"
87
],
9-
"main": "out/index.js",
8+
"main": "./dist/index.js",
9+
"module": "./dist/index.mjs",
10+
"types": "./dist/index.d.ts",
11+
"exports": {
12+
".": {
13+
"dev": "./src/index.ts",
14+
"require": "./dist/index.js",
15+
"import": "./dist/index.mjs"
16+
}
17+
},
1018
"bin": {
1119
"tsm-language-server": "./bin/tsm-language-server.js"
1220
},
21+
"scripts": {
22+
"dev": "tsup --watch",
23+
"build": "tsup"
24+
},
1325
"dependencies": {
14-
"@babel/parser": "^7.25.8",
15-
"@volar/language-core": "~2.4.0",
1626
"@volar/language-server": "~2.4.0",
17-
"@volar/typescript": "~2.4.0",
18-
"@vue-macros/common": "^1.15.0",
19-
"estree-walker": "^3.0.3",
27+
"ts-macro": "workspace:*",
2028
"volar-service-css": "volar-2.4",
2129
"volar-service-emmet": "volar-2.4",
22-
"volar-service-typescript": "volar-2.4",
23-
"vscode-html-languageservice": "^5.3.1",
24-
"vscode-uri": "^3.0.8"
25-
},
26-
"devDependencies": {
27-
"@babel/types": "^7.25.8"
30+
"volar-service-typescript": "volar-2.4"
2831
}
2932
}

packages/language-server/src/index.ts

+35-31
Original file line numberDiff line numberDiff line change
@@ -1,41 +1,45 @@
11
import {
22
createConnection,
33
createServer,
4-
createTypeScriptProject,
4+
createSimpleProject,
55
loadTsdkByPath,
6-
} from "@volar/language-server/node";
7-
import { create as createCssService } from "volar-service-css";
8-
import { create as createEmmetService } from "volar-service-emmet";
9-
import { create as createTypeScriptServices } from "volar-service-typescript";
10-
import { getLanguagePlugin } from "./language-plugin";
6+
} from '@volar/language-server/node'
7+
import { getLanguagePlugin } from 'ts-macro'
8+
import { create as createCssService } from 'volar-service-css'
9+
import { create as createEmmetService } from 'volar-service-emmet'
10+
import { create as createTypeScriptServices } from 'volar-service-typescript'
11+
export { getLanguagePlugin }
1112

12-
const connection = createConnection();
13-
const server = createServer(connection);
13+
const connection = createConnection()
14+
const server = createServer(connection)
1415

15-
connection.listen();
16+
connection.listen()
1617

17-
connection.onInitialize((params) => {
18+
connection.onInitialize(async (params) => {
1819
const tsdk = loadTsdkByPath(
1920
params.initializationOptions.typescript.tsdk,
2021
params.locale,
21-
);
22-
const project = createTypeScriptProject(
23-
tsdk.typescript,
24-
tsdk.diagnosticMessages,
25-
() => ({
26-
languagePlugins: [getLanguagePlugin(tsdk.typescript)],
27-
}),
28-
);
29-
30-
return server.initialize(params, project, [
31-
createCssService(),
32-
createEmmetService(),
33-
...createTypeScriptServices(tsdk.typescript).filter(
34-
(plugin) => plugin.name === "typescript-syntactic",
35-
),
36-
]);
37-
});
38-
39-
connection.onInitialized(server.initialized);
40-
41-
connection.onShutdown(server.shutdown);
22+
)
23+
24+
const result = await server.initialize(
25+
params,
26+
createSimpleProject([
27+
getLanguagePlugin(tsdk.typescript, params.workspaceFolders![0].uri),
28+
]),
29+
[
30+
createCssService(),
31+
createEmmetService(),
32+
...createTypeScriptServices(tsdk.typescript).filter(
33+
(plugin) => plugin.name === 'typescript-syntactic',
34+
),
35+
],
36+
)
37+
38+
result.capabilities.semanticTokensProvider = undefined
39+
40+
return result
41+
})
42+
43+
connection.onInitialized(server.initialized)
44+
45+
connection.onShutdown(server.shutdown)

packages/language-server/src/language-plugin.ts

-143
This file was deleted.
+2-2
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
{
22
"extends": "../../tsconfig.base.json",
33
"compilerOptions": {
4-
"rootDir": "src",
5-
"outDir": "out"
4+
"composite": true,
5+
"rootDir": "src"
66
},
77
"include": ["src"]
88
}
+10
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
import { defineConfig } from 'tsup'
2+
3+
export default defineConfig({
4+
entry: ['src/index.ts'],
5+
format: ['cjs', 'esm'],
6+
minify: false,
7+
splitting: true,
8+
clean: true,
9+
dts: true,
10+
})

0 commit comments

Comments
 (0)