version 0.1.0
This commit is contained in:
parent
ffc9763d42
commit
a95e98a650
5
.gitignore
vendored
5
.gitignore
vendored
|
@ -6,9 +6,12 @@
|
||||||
!.vscode/extensions.json
|
!.vscode/extensions.json
|
||||||
!.vscode/*.code-snippets
|
!.vscode/*.code-snippets
|
||||||
|
|
||||||
|
node_modules/*
|
||||||
|
|
||||||
|
out/*
|
||||||
|
|
||||||
# Local History for Visual Studio Code
|
# Local History for Visual Studio Code
|
||||||
.history/
|
.history/
|
||||||
|
|
||||||
# Built Visual Studio Code Extensions
|
# Built Visual Studio Code Extensions
|
||||||
*.vsix
|
*.vsix
|
||||||
|
|
||||||
|
|
15
.vscode/launch.json
vendored
Normal file
15
.vscode/launch.json
vendored
Normal file
|
@ -0,0 +1,15 @@
|
||||||
|
{
|
||||||
|
"version": "0.1.0",
|
||||||
|
"configurations": [
|
||||||
|
{
|
||||||
|
"name": "Launch Extension",
|
||||||
|
"type": "extensionHost",
|
||||||
|
"request": "launch",
|
||||||
|
"runtimeExecutable": "${execPath}",
|
||||||
|
"args": [
|
||||||
|
"--extensionDevelopmentPath=${workspaceRoot}"
|
||||||
|
],
|
||||||
|
"sourceMaps": true,
|
||||||
|
},
|
||||||
|
]
|
||||||
|
}
|
|
@ -1,3 +1,11 @@
|
||||||
# hblang-vscode
|
# hblang-vscode
|
||||||
|
|
||||||
syntax highlighting for hblang in vscode
|
syntax highlighting for hblang in vscode
|
||||||
|
|
||||||
|
# Usage guide:
|
||||||
|
|
||||||
|
1. run `cargo install hblang --git https://git.ablecorp.us/ableos/holey-bytes`
|
||||||
|
2. add `$HOME/.cargo/bin` (or wherever you installed hblang) to `$PATH`
|
||||||
|
> in bash, `export PATH=$PATH:$HOME/.cargo/bin`<br>
|
||||||
|
> in other shells, there may be other ways
|
||||||
|
3. log out and log back in (or something, idk)
|
|
@ -1,31 +1,79 @@
|
||||||
{
|
{
|
||||||
"comments": {
|
"comments": {
|
||||||
"lineComment": "//",
|
"lineComment": "//",
|
||||||
"blockComment": ["/*", "*/"]
|
"blockComment": [
|
||||||
},
|
"/*",
|
||||||
"brackets": [
|
"*/"
|
||||||
["{", "}"],
|
]
|
||||||
["[", "]"],
|
},
|
||||||
["(", ")"]
|
"brackets": [
|
||||||
],
|
[
|
||||||
"autoClosingPairs": [
|
"{",
|
||||||
{ "open": "{", "close": "}" },
|
"}"
|
||||||
{ "open": "[", "close": "]" },
|
],
|
||||||
{ "open": "(", "close": ")" },
|
[
|
||||||
{ "open": "\"", "close": "\"", "notIn": ["string"] },
|
"[",
|
||||||
{ "open": "/*", "close": "*/", "notIn": ["string"] }
|
"]"
|
||||||
],
|
],
|
||||||
"surroundingPairs": [
|
[
|
||||||
{ "open": "{", "close": "}" },
|
"(",
|
||||||
{ "open": "[", "close": "]" },
|
")"
|
||||||
{ "open": "(", "close": ")" },
|
]
|
||||||
{ "open": "\"", "close": "\"" }
|
],
|
||||||
],
|
"autoClosingPairs": [
|
||||||
"folding": {
|
{
|
||||||
"markers": {
|
"open": "{",
|
||||||
"start": "^\\s*//\\s*#region\\b",
|
"close": "}"
|
||||||
"end": "^\\s*//\\s*#endregion\\b"
|
},
|
||||||
}
|
{
|
||||||
}
|
"open": "[",
|
||||||
}
|
"close": "]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"open": "(",
|
||||||
|
"close": ")"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"open": "\"",
|
||||||
|
"close": "\"",
|
||||||
|
"notIn": [
|
||||||
|
"string"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"open": "/*",
|
||||||
|
"close": "*/",
|
||||||
|
"notIn": [
|
||||||
|
"string"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"surroundingPairs": [
|
||||||
|
{
|
||||||
|
"open": "{",
|
||||||
|
"close": "}"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"open": "[",
|
||||||
|
"close": "]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"open": "(",
|
||||||
|
"close": ")"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"open": "\"",
|
||||||
|
"close": "\""
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"folding": {
|
||||||
|
"markers": {
|
||||||
|
"start": "^\\s*//\\s*#region\\b",
|
||||||
|
"end": "^\\s*//\\s*#endregion\\b"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"indentationRules": {
|
||||||
|
"increaseIndentPattern": "{",
|
||||||
|
"decreaseIndentPattern": "}"
|
||||||
|
},
|
||||||
|
}
|
2221
package-lock.json
generated
Normal file
2221
package-lock.json
generated
Normal file
File diff suppressed because it is too large
Load diff
92
package.json
92
package.json
|
@ -1,27 +1,69 @@
|
||||||
{
|
{
|
||||||
"name": "hblang",
|
"name": "hblang",
|
||||||
"repository": {"url": "https://git.ablecorp.us/aurlex/hblang-vscode"},
|
"repository": {
|
||||||
"publisher": "aurlex",
|
"url": "https://git.ablecorp.us/koniifer/hblang-vscode"
|
||||||
"displayName": "hblang",
|
},
|
||||||
"description": "Syntax highlighting for holey-bytes lang",
|
"publisher": "koniifer",
|
||||||
"version": "0.0.1",
|
"displayName": "hblang",
|
||||||
"engines": {
|
"description": "Syntax highlighter and formatter for holey-bytes lang",
|
||||||
"vscode": "^1.0.0"
|
"version": "0.1.0",
|
||||||
},
|
"engines": {
|
||||||
"categories": [
|
"vscode": "^1.75.0"
|
||||||
"Programming Languages"
|
},
|
||||||
],
|
"main": "./out/main.js",
|
||||||
"contributes": {
|
"categories": [
|
||||||
"languages": [{
|
"Programming Languages",
|
||||||
"id": "hblang",
|
"Formatters"
|
||||||
"aliases": ["hblang", "hblang"],
|
],
|
||||||
"extensions": [".hb"],
|
"activationEvents": [
|
||||||
"configuration": "./language-configuration.json"
|
"onLanguage:hblang",
|
||||||
}],
|
"onCommand:extension.formatDocument"
|
||||||
"grammars": [{
|
],
|
||||||
"language": "hblang",
|
"contributes": {
|
||||||
"scopeName": "source.hblang",
|
"languages": [
|
||||||
"path": "./syntaxes/hblang.tmLanguage.json"
|
{
|
||||||
}]
|
"id": "hblang",
|
||||||
}
|
"aliases": [
|
||||||
|
"hblang"
|
||||||
|
],
|
||||||
|
"extensions": [
|
||||||
|
".hb"
|
||||||
|
],
|
||||||
|
"configuration": "./language-configuration.json"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"grammars": [
|
||||||
|
{
|
||||||
|
"language": "hblang",
|
||||||
|
"scopeName": "source.hblang",
|
||||||
|
"path": "./syntaxes/hblang.tmLanguage.json"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"formatters": [
|
||||||
|
{
|
||||||
|
"language": "hblang",
|
||||||
|
"provider": {
|
||||||
|
"provideDocumentFormattingEdits": {
|
||||||
|
"command": "editor.action.formatDocument"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"scripts": {
|
||||||
|
"vscode:prepublish": "webpack",
|
||||||
|
"compile": "webpack --mode production",
|
||||||
|
"watch": "webpack --watch --mode development"
|
||||||
|
},
|
||||||
|
"devDependencies": {
|
||||||
|
"@types/vscode": "^1.75.0",
|
||||||
|
"os-browserify": "^0.3.0",
|
||||||
|
"path-browserify": "^1.0.1",
|
||||||
|
"stream-browserify": "^3.0.0",
|
||||||
|
"ts-loader": "^9.5.1",
|
||||||
|
"typescript": "^4.0.0",
|
||||||
|
"vscode": "^1.1.37",
|
||||||
|
"webpack": "^5.0.0",
|
||||||
|
"webpack-cli": "^4.0.0"
|
||||||
|
}
|
||||||
}
|
}
|
66
src/main.ts
Normal file
66
src/main.ts
Normal file
|
@ -0,0 +1,66 @@
|
||||||
|
import * as vscode from 'vscode';
|
||||||
|
import { spawn } from 'child_process';
|
||||||
|
import * as fs from 'fs';
|
||||||
|
import * as os from 'os';
|
||||||
|
import * as path from 'path';
|
||||||
|
|
||||||
|
export function activate(context: vscode.ExtensionContext) {
|
||||||
|
// Register a document formatting edit provider for the language
|
||||||
|
context.subscriptions.push(
|
||||||
|
vscode.languages.registerDocumentFormattingEditProvider('hblang', {
|
||||||
|
async provideDocumentFormattingEdits(document: vscode.TextDocument): Promise<vscode.TextEdit[]> {
|
||||||
|
|
||||||
|
try {
|
||||||
|
const formattedText = await formatDocument(document.fileName);
|
||||||
|
|
||||||
|
const edit = new vscode.TextEdit(
|
||||||
|
new vscode.Range(0, 0, document.lineCount, 0),
|
||||||
|
formattedText
|
||||||
|
);
|
||||||
|
|
||||||
|
return [edit];
|
||||||
|
} catch (error: unknown) {
|
||||||
|
if (error instanceof Error) {
|
||||||
|
vscode.window.showErrorMessage(`Formatting failed: ${error.message}`);
|
||||||
|
} else {
|
||||||
|
vscode.window.showErrorMessage(`Formatting failed: ${String(error)}`);
|
||||||
|
}
|
||||||
|
return []; // Return an empty array if formatting fails
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
export function deactivate() { }
|
||||||
|
|
||||||
|
async function formatDocument(path: string): Promise<string> {
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
return new Promise((resolve, reject) => {
|
||||||
|
const child = spawn('hbc', ['--fmt-stdout', path], { shell: true });
|
||||||
|
|
||||||
|
let formattedText = '';
|
||||||
|
|
||||||
|
// Capture the output
|
||||||
|
child.stdout.on('data', (data) => {
|
||||||
|
formattedText += data.toString();
|
||||||
|
});
|
||||||
|
|
||||||
|
// Handle errors
|
||||||
|
child.stderr.on('data', (data) => {
|
||||||
|
reject(new Error(data.toString()));
|
||||||
|
});
|
||||||
|
|
||||||
|
// Handle process exit
|
||||||
|
child.on('exit', (code) => {
|
||||||
|
|
||||||
|
if (code === 0) {
|
||||||
|
resolve(formattedText);
|
||||||
|
} else {
|
||||||
|
reject(new Error(`Formatter exited with code ${code}`));
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
|
@ -1,157 +1,192 @@
|
||||||
{
|
{
|
||||||
"scopeName": "source.hblang",
|
"scopeName": "source.hblang",
|
||||||
"name": "hblang",
|
"name": "hblang",
|
||||||
"fileTypes": ["hb"],
|
"fileTypes": [
|
||||||
"patterns": [
|
"hb"
|
||||||
{
|
],
|
||||||
"include": "#comments"
|
"patterns": [
|
||||||
},
|
{
|
||||||
{
|
"include": "#all"
|
||||||
"include": "#strings"
|
}
|
||||||
},
|
],
|
||||||
{
|
"repository": {
|
||||||
"include": "#keywords"
|
"all": {
|
||||||
},
|
"patterns": [
|
||||||
{
|
{
|
||||||
"include": "#types"
|
"include": "#comment"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"include": "#declarations"
|
"include": "#string"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"include": "#functions"
|
"include": "#number"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"include": "#macros"
|
"include": "#keyword"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"include": "#structs"
|
"include": "#struct"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"include": "#arrays"
|
"include": "#type"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"include": "#pointers"
|
"include": "#variable"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"include": "#operators"
|
"include": "#function"
|
||||||
}
|
},
|
||||||
],
|
{
|
||||||
"repository": {
|
"include": "#operator"
|
||||||
"comments": {
|
},
|
||||||
"patterns": [
|
{
|
||||||
{
|
"include": "#punctuation"
|
||||||
"name": "comment.block.hblang",
|
},
|
||||||
"begin": "/\\*",
|
{
|
||||||
"end": "\\*/"
|
"include": "#array"
|
||||||
},
|
}
|
||||||
{
|
]
|
||||||
"name": "comment.line.double-slash.hblang",
|
},
|
||||||
"begin": "//",
|
"parameter": {
|
||||||
"end": "$"
|
"patterns": [
|
||||||
}
|
{
|
||||||
]
|
"name": "variable.parameter.hblang",
|
||||||
},
|
"match": "\\b\\w+\\b"
|
||||||
"strings": {
|
}
|
||||||
"patterns": [
|
]
|
||||||
{
|
},
|
||||||
"name": "string.quoted.double.hblang",
|
"number": {
|
||||||
"begin": "\"",
|
"patterns": [
|
||||||
"end": "\""
|
{
|
||||||
}
|
"name": "constant.numeric.hblang",
|
||||||
]
|
"match": "\\b\\d+(\\.\\d+)?\\b"
|
||||||
},
|
},
|
||||||
"keywords": {
|
{
|
||||||
"patterns": [
|
"name": "constant.numeric.hex.hblang",
|
||||||
{
|
"match": "0x[0-9A-Fa-f]+"
|
||||||
"name": "keyword.control.hblang",
|
}
|
||||||
"match": "\\b(loop|break|if|else|return)\\b"
|
]
|
||||||
}
|
},
|
||||||
]
|
"comment": {
|
||||||
},
|
"patterns": [
|
||||||
"types": {
|
{
|
||||||
"patterns": [
|
"name": "comment.block.hblang",
|
||||||
{
|
"begin": "/\\*",
|
||||||
"name": "storage.type.hblang",
|
"end": "\\*/"
|
||||||
"match": "\\b(uint|int|void|u\\d+|i\\d+|f\\d+)\\b"
|
},
|
||||||
}
|
{
|
||||||
]
|
"name": "comment.line.double-slash.hblang",
|
||||||
},
|
"begin": "//",
|
||||||
"declarations": {
|
"end": "$"
|
||||||
"patterns": [
|
}
|
||||||
{
|
]
|
||||||
"name": "variable.other.declaration.hblang",
|
},
|
||||||
"match": "\\b[A-Z_][A-Z0-9_]*\\b"
|
"string": {
|
||||||
},
|
"patterns": [
|
||||||
{
|
{
|
||||||
"name": "variable.other.assignment.hblang",
|
"name": "string.quoted.double.hblang",
|
||||||
"match": "\\b[a-z_][a-z0-9_]*\\b"
|
"begin": "\"",
|
||||||
}
|
"end": "\"",
|
||||||
]
|
"beginCaptures": {
|
||||||
},
|
"0": {
|
||||||
"operators": {
|
"name": "punctuation.definition.string.begin.hblang"
|
||||||
"patterns": [
|
}
|
||||||
{
|
},
|
||||||
"name": "keyword.operator.hblang",
|
"endCaptures": {
|
||||||
"match": "\\b(\\^|\\*|&|<<|>>|>>>|<<=|>>=|>>>=|\\+|\\-|\\*|\\/|%|\\|\\||&&|!|==|!=|<|<=|>|>=|\\||&|\\^|~|<<|>>|\\+=|-=|\\*=|\\/=|%=|\\|=|&=|\\^=|~=|<<=|>>=|>>>|@\\w+)\\b"
|
"0": {
|
||||||
}
|
"name": "punctuation.definition.string.end.hblang"
|
||||||
]
|
}
|
||||||
},
|
},
|
||||||
"functions": {
|
"patterns": [
|
||||||
"patterns": [
|
{
|
||||||
{
|
"name": "constant.character.escape.hblang",
|
||||||
"name": "entity.name.function.hblang",
|
"match": "\\\\[\"'\\\\bfnrt]|\\\\(\\{[^}]+\\}|\\[[^]]+\\]|[a-zA-Z])"
|
||||||
"match": "\\b[a-z_][a-z0-9_]*\\b(?=\\()"
|
},
|
||||||
}
|
{
|
||||||
]
|
"name": "invalid.illegal.escaped.hblang",
|
||||||
},
|
"match": "\\\\."
|
||||||
"macros": {
|
}
|
||||||
"patterns": [
|
]
|
||||||
{
|
}
|
||||||
"name": "entity.name.macro.hblang",
|
]
|
||||||
"match": "@\\b[a-z_][a-z0-9_]*\\b"
|
},
|
||||||
}
|
"keyword": {
|
||||||
]
|
"patterns": [
|
||||||
},
|
{
|
||||||
"structs": {
|
"name": "keyword.control.hblang",
|
||||||
"patterns": [
|
"match": "\\b(loop|break|if|else|return|packed|continue|true|false|struct|idk)\\b"
|
||||||
{
|
}
|
||||||
"name": "storage.type.struct.hblang",
|
]
|
||||||
"match": "\\b[a-zA-Z_][a-zA-Z0-9_]*\\s*:=\\s*struct\\b"
|
},
|
||||||
},
|
"type": {
|
||||||
{
|
"patterns": [
|
||||||
"name": "storage.type.struct.hblang",
|
{
|
||||||
"match": "\\b\\.[a-zA-Z_][a-zA-Z0-9_]*\\b"
|
"name": "storage.type.hblang",
|
||||||
}
|
"match": "\\buint|int|(u|i)(8|16|32)|void|bool|[A-Z]\\w+\\b"
|
||||||
]
|
}
|
||||||
},
|
]
|
||||||
"arrays": {
|
},
|
||||||
"patterns": [
|
"variable": {
|
||||||
{
|
"patterns": [
|
||||||
"name": "storage.type.array.hblang",
|
{
|
||||||
"match": "\\[\\b[a-zA-Z_][a-zA-Z0-9_]*\\b\\]"
|
"name": "variable.other.declaration.hblang",
|
||||||
},
|
"match": "\\b\\w+\\s*:=\\b"
|
||||||
{
|
},
|
||||||
"name": "storage.type.array.hblang",
|
{
|
||||||
"match": "\\[\\b[a-zA-Z_][a-zA-Z0-9_]*\\b;\\s*\\d+\\]"
|
"name": "variable.other.assignment.hblang",
|
||||||
}
|
"match": "\\b\\w+\\s*=\\b"
|
||||||
]
|
}
|
||||||
},
|
]
|
||||||
"pointers": {
|
},
|
||||||
"patterns": [
|
"operator": {
|
||||||
{
|
"patterns": [
|
||||||
"name": "storage.modifier.pointer.hblang",
|
{
|
||||||
"match": "\\^+"
|
"name": "keyword.operator.hblang",
|
||||||
},
|
"match": "(@|:=|<<=|>>=|>=|<=|^=|\\+=|-=|\\*=|\\/=|%=|\\|=|&=|\\^|\\*|&|&&|\\|\\||<<|>>|\\+|\\-|\\/|%|\\||!|==|!=|<|>|=)"
|
||||||
{
|
}
|
||||||
"name": "keyword.operator.dereference.hblang",
|
]
|
||||||
"match": "\\*+"
|
},
|
||||||
},
|
"function": {
|
||||||
{
|
"patterns": [
|
||||||
"name": "keyword.operator.reference.hblang",
|
{
|
||||||
"match": "\\&+"
|
"name": "entity.name.function.hblang",
|
||||||
}
|
"begin": "\\b\\w+\\s*\\(",
|
||||||
]
|
"end": "\\)",
|
||||||
}
|
"patterns": [
|
||||||
}
|
{
|
||||||
|
"include": "#all"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include": "#parameter"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"struct": {
|
||||||
|
"patterns": [
|
||||||
|
{
|
||||||
|
"name": "entity.name.type.struct.hblang",
|
||||||
|
"match": "\\b[A-Z]\\w+\\b"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"array": {
|
||||||
|
"patterns": [
|
||||||
|
{
|
||||||
|
"name": "storage.type.array.hblang",
|
||||||
|
"begin": "\\.\\(",
|
||||||
|
"end": "\\)"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"punctuation": {
|
||||||
|
"patterns": [
|
||||||
|
{
|
||||||
|
"name": "punctuation.terminator.statement.hblang",
|
||||||
|
"match": ";|\\.|,|:"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
15
tsconfig.json
Normal file
15
tsconfig.json
Normal file
|
@ -0,0 +1,15 @@
|
||||||
|
{
|
||||||
|
"compilerOptions": {
|
||||||
|
"target": "ES6",
|
||||||
|
"module": "commonjs",
|
||||||
|
"outDir": "./out",
|
||||||
|
"rootDir": "./src",
|
||||||
|
"strict": true,
|
||||||
|
"esModuleInterop": true,
|
||||||
|
"skipLibCheck": true,
|
||||||
|
"forceConsistentCasingInFileNames": true
|
||||||
|
},
|
||||||
|
"include": [
|
||||||
|
"src/**/*.ts"
|
||||||
|
]
|
||||||
|
}
|
34
webpack.config.js
Normal file
34
webpack.config.js
Normal file
|
@ -0,0 +1,34 @@
|
||||||
|
const path = require('path');
|
||||||
|
|
||||||
|
module.exports = {
|
||||||
|
mode: 'production',
|
||||||
|
entry: './src/main.ts',
|
||||||
|
output: {
|
||||||
|
path: path.resolve(__dirname, 'out'),
|
||||||
|
filename: 'main.js',
|
||||||
|
libraryTarget: 'commonjs2' // This is correct for VS Code extensions
|
||||||
|
},
|
||||||
|
resolve: {
|
||||||
|
extensions: ['.ts', '.js'],
|
||||||
|
fallback: {
|
||||||
|
// For Node.js core modules not available in browser context, you set them to false
|
||||||
|
"child_process": false, // Not used in browser context
|
||||||
|
"fs": false, // Not used in browser context
|
||||||
|
"os": require.resolve("os-browserify/browser"), // Polyfill for os
|
||||||
|
"path": require.resolve("path-browserify"), // Polyfill for path
|
||||||
|
},
|
||||||
|
},
|
||||||
|
externals: {
|
||||||
|
vscode: 'commonjs vscode' // Externalize the vscode module
|
||||||
|
},
|
||||||
|
module: {
|
||||||
|
rules: [
|
||||||
|
{
|
||||||
|
test: /\.ts$/,
|
||||||
|
use: 'ts-loader',
|
||||||
|
exclude: /node_modules/
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
target: 'node' // Specify the target environment as Node.js
|
||||||
|
};
|
Loading…
Reference in a new issue