mirror of
https://github.com/danbulant/monaco-yaml
synced 2026-05-19 04:08:48 +00:00
Build project using esbuild
This is much more flexible than `monaco-plugin-helpers`. Because of this, it’s possible to use Prettier as an external dependency, so users can ignore it in their own build process of they choose not to support formatting. Instead of rewriting YAML language service imports in the build tool, I decided to just import them from where they need to be imported in the source code. Closes #63
This commit is contained in:
parent
c2e6af4198
commit
95fd123191
8 changed files with 81 additions and 142 deletions
|
|
@ -20,4 +20,5 @@ rules:
|
|||
|
||||
node/no-extraneous-import: off
|
||||
node/no-unpublished-import: off
|
||||
node/no-unsupported-features/es-syntax: off
|
||||
node/no-unsupported-features/node-builtins: off
|
||||
|
|
|
|||
1
.gitignore
vendored
1
.gitignore
vendored
|
|
@ -1,6 +1,5 @@
|
|||
dist/
|
||||
node_modules/
|
||||
/out/
|
||||
/lib/
|
||||
*.log
|
||||
*.tgz
|
||||
|
|
|
|||
43
build.js
Executable file
43
build.js
Executable file
|
|
@ -0,0 +1,43 @@
|
|||
const { promises: fs } = require('fs');
|
||||
const { join } = require('path');
|
||||
|
||||
const { build } = require('esbuild');
|
||||
|
||||
const { dependencies, peerDependencies } = require('./package.json');
|
||||
|
||||
fs.rm(join(__dirname, 'lib'), { force: true, recursive: true })
|
||||
.then(() =>
|
||||
build({
|
||||
entryPoints: ['src/monaco.contribution.ts', 'src/yaml.worker.ts'],
|
||||
bundle: true,
|
||||
external: Object.keys({ ...dependencies, ...peerDependencies }),
|
||||
logLevel: 'info',
|
||||
outdir: 'lib/esm',
|
||||
sourcemap: true,
|
||||
format: 'esm',
|
||||
target: ['es2019'],
|
||||
plugins: [
|
||||
{
|
||||
name: 'alias',
|
||||
setup({ onResolve }) {
|
||||
onResolve({ filter: /^prettier$/ }, () => ({
|
||||
path: 'prettier/standalone',
|
||||
external: true,
|
||||
}));
|
||||
onResolve({ filter: /vscode-nls/ }, () => ({
|
||||
path: require.resolve('./src/fillers/vscode-nls.ts'),
|
||||
}));
|
||||
onResolve({ filter: /\/umd\// }, (args) => ({
|
||||
path: require.resolve(args.path.replace(/\/umd\//, '/esm/'), {
|
||||
paths: [args.resolveDir],
|
||||
}),
|
||||
}));
|
||||
},
|
||||
},
|
||||
],
|
||||
}),
|
||||
)
|
||||
.catch((error) => {
|
||||
console.error(error);
|
||||
process.exit(1);
|
||||
});
|
||||
106
package-lock.json
generated
106
package-lock.json
generated
|
|
@ -6,6 +6,7 @@
|
|||
"dev": true,
|
||||
"packages": {
|
||||
"": {
|
||||
"name": "monaco-yaml",
|
||||
"version": "3.0.1",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
|
|
@ -15,19 +16,18 @@
|
|||
"dependencies": {
|
||||
"@types/json-schema": "^7.0.9",
|
||||
"js-yaml": "^3.14.1",
|
||||
"prettier": "2.0.5",
|
||||
"yaml-ast-parser-custom-tags": "^0.0.43"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@typescript-eslint/eslint-plugin": "^4.29.0",
|
||||
"@typescript-eslint/parser": "^4.29.0",
|
||||
"esbuild": "^0.12.20",
|
||||
"eslint": "^7.32.0",
|
||||
"eslint-config-remcohaszing": "^3.5.0",
|
||||
"husky": "^7.0.1",
|
||||
"lint-staged": "^11.1.1",
|
||||
"monaco-editor": "^0.26.1",
|
||||
"monaco-plugin-helpers": "^1.0.3",
|
||||
"prettier": "2.0.5",
|
||||
"rimraf": "^3.0.2",
|
||||
"typescript": "^4.3.5",
|
||||
"yaml-language-server": "^0.11.1"
|
||||
},
|
||||
|
|
@ -3484,6 +3484,16 @@
|
|||
"es6-promise": "^4.0.3"
|
||||
}
|
||||
},
|
||||
"node_modules/esbuild": {
|
||||
"version": "0.12.20",
|
||||
"resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.12.20.tgz",
|
||||
"integrity": "sha512-u7+0qTo9Z64MD9PhooEngCmzyEYJ6ovFhPp8PLNh3UasR5Ihjv6HWVXqm8uHmasdQlpsAf0IsY4U0YVUfCpt4Q==",
|
||||
"dev": true,
|
||||
"hasInstallScript": true,
|
||||
"bin": {
|
||||
"esbuild": "bin/esbuild"
|
||||
}
|
||||
},
|
||||
"node_modules/escalade": {
|
||||
"version": "3.1.1",
|
||||
"resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz",
|
||||
|
|
@ -6947,32 +6957,6 @@
|
|||
"integrity": "sha512-mm45nUrBDk0DgZKgbD7+bhDOtcAFNGPJJRAdS6Su1kTGl6XEgC7U3xOmDUW/0RrLf+jlvCGaqLvD4p2VjwuwwQ==",
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/monaco-plugin-helpers": {
|
||||
"version": "1.0.3",
|
||||
"resolved": "https://registry.npmjs.org/monaco-plugin-helpers/-/monaco-plugin-helpers-1.0.3.tgz",
|
||||
"integrity": "sha512-6AYI3ONAy8ki74qG2JqtFrLdiJHQlgeO5l4Rwr0OMyIpGXhc94y5rZuFxOtgGkxgSrZfHSwOt/MulUNZ/mOQOw==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"typescript": "^2.7.2"
|
||||
},
|
||||
"bin": {
|
||||
"mcopy": "bin/mcopy",
|
||||
"mrmdir": "bin/mrmdir"
|
||||
}
|
||||
},
|
||||
"node_modules/monaco-plugin-helpers/node_modules/typescript": {
|
||||
"version": "2.9.2",
|
||||
"resolved": "https://registry.npmjs.org/typescript/-/typescript-2.9.2.tgz",
|
||||
"integrity": "sha512-Gr4p6nFNaoufRIY4NMdpQRNmgxVIGMs4Fcu/ujdYk3nAZqk7supzBE9idmvfZIlH/Cuj//dvi+019qEue9lV0w==",
|
||||
"dev": true,
|
||||
"bin": {
|
||||
"tsc": "bin/tsc",
|
||||
"tsserver": "bin/tsserver"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=4.2.0"
|
||||
}
|
||||
},
|
||||
"node_modules/monaco-yaml": {
|
||||
"resolved": "",
|
||||
"link": true
|
||||
|
|
@ -8468,7 +8452,6 @@
|
|||
"version": "2.0.5",
|
||||
"resolved": "https://registry.npmjs.org/prettier/-/prettier-2.0.5.tgz",
|
||||
"integrity": "sha512-7PtVymN48hGcO4fGjybyBSIWDsLU4H4XlvOHfq91pz9kkGlonzwTfYkaIEwiRg/dAJF9YlbsduBAgtYLi+8cFg==",
|
||||
"dev": true,
|
||||
"bin": {
|
||||
"prettier": "bin-prettier.js"
|
||||
},
|
||||
|
|
@ -14403,6 +14386,12 @@
|
|||
"es6-promise": "^4.0.3"
|
||||
}
|
||||
},
|
||||
"esbuild": {
|
||||
"version": "0.12.20",
|
||||
"resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.12.20.tgz",
|
||||
"integrity": "sha512-u7+0qTo9Z64MD9PhooEngCmzyEYJ6ovFhPp8PLNh3UasR5Ihjv6HWVXqm8uHmasdQlpsAf0IsY4U0YVUfCpt4Q==",
|
||||
"dev": true
|
||||
},
|
||||
"escalade": {
|
||||
"version": "3.1.1",
|
||||
"resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz",
|
||||
|
|
@ -17038,38 +17027,20 @@
|
|||
"integrity": "sha512-mm45nUrBDk0DgZKgbD7+bhDOtcAFNGPJJRAdS6Su1kTGl6XEgC7U3xOmDUW/0RrLf+jlvCGaqLvD4p2VjwuwwQ==",
|
||||
"dev": true
|
||||
},
|
||||
"monaco-plugin-helpers": {
|
||||
"version": "1.0.3",
|
||||
"resolved": "https://registry.npmjs.org/monaco-plugin-helpers/-/monaco-plugin-helpers-1.0.3.tgz",
|
||||
"integrity": "sha512-6AYI3ONAy8ki74qG2JqtFrLdiJHQlgeO5l4Rwr0OMyIpGXhc94y5rZuFxOtgGkxgSrZfHSwOt/MulUNZ/mOQOw==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"typescript": "^2.7.2"
|
||||
},
|
||||
"dependencies": {
|
||||
"typescript": {
|
||||
"version": "2.9.2",
|
||||
"resolved": "https://registry.npmjs.org/typescript/-/typescript-2.9.2.tgz",
|
||||
"integrity": "sha512-Gr4p6nFNaoufRIY4NMdpQRNmgxVIGMs4Fcu/ujdYk3nAZqk7supzBE9idmvfZIlH/Cuj//dvi+019qEue9lV0w==",
|
||||
"dev": true
|
||||
}
|
||||
}
|
||||
},
|
||||
"monaco-yaml": {
|
||||
"version": "file:",
|
||||
"requires": {
|
||||
"@types/json-schema": "^7.0.9",
|
||||
"@typescript-eslint/eslint-plugin": "^4.29.0",
|
||||
"@typescript-eslint/parser": "^4.29.0",
|
||||
"esbuild": "^0.12.20",
|
||||
"eslint": "^7.32.0",
|
||||
"eslint-config-remcohaszing": "^3.5.0",
|
||||
"husky": "^7.0.1",
|
||||
"js-yaml": "^3.14.1",
|
||||
"lint-staged": "^11.1.1",
|
||||
"monaco-editor": "^0.26.1",
|
||||
"monaco-plugin-helpers": "^1.0.3",
|
||||
"prettier": "2.0.5",
|
||||
"rimraf": "^3.0.2",
|
||||
"typescript": "^4.3.5",
|
||||
"webpack-example": "file:examples/webpack",
|
||||
"yaml-ast-parser-custom-tags": "^0.0.43",
|
||||
|
|
@ -19775,6 +19746,12 @@
|
|||
"es6-promise": "^4.0.3"
|
||||
}
|
||||
},
|
||||
"esbuild": {
|
||||
"version": "0.12.20",
|
||||
"resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.12.20.tgz",
|
||||
"integrity": "sha512-u7+0qTo9Z64MD9PhooEngCmzyEYJ6ovFhPp8PLNh3UasR5Ihjv6HWVXqm8uHmasdQlpsAf0IsY4U0YVUfCpt4Q==",
|
||||
"dev": true
|
||||
},
|
||||
"escalade": {
|
||||
"version": "3.1.1",
|
||||
"resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz",
|
||||
|
|
@ -22410,23 +22387,6 @@
|
|||
"integrity": "sha512-mm45nUrBDk0DgZKgbD7+bhDOtcAFNGPJJRAdS6Su1kTGl6XEgC7U3xOmDUW/0RrLf+jlvCGaqLvD4p2VjwuwwQ==",
|
||||
"dev": true
|
||||
},
|
||||
"monaco-plugin-helpers": {
|
||||
"version": "1.0.3",
|
||||
"resolved": "https://registry.npmjs.org/monaco-plugin-helpers/-/monaco-plugin-helpers-1.0.3.tgz",
|
||||
"integrity": "sha512-6AYI3ONAy8ki74qG2JqtFrLdiJHQlgeO5l4Rwr0OMyIpGXhc94y5rZuFxOtgGkxgSrZfHSwOt/MulUNZ/mOQOw==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"typescript": "^2.7.2"
|
||||
},
|
||||
"dependencies": {
|
||||
"typescript": {
|
||||
"version": "2.9.2",
|
||||
"resolved": "https://registry.npmjs.org/typescript/-/typescript-2.9.2.tgz",
|
||||
"integrity": "sha512-Gr4p6nFNaoufRIY4NMdpQRNmgxVIGMs4Fcu/ujdYk3nAZqk7supzBE9idmvfZIlH/Cuj//dvi+019qEue9lV0w==",
|
||||
"dev": true
|
||||
}
|
||||
}
|
||||
},
|
||||
"ms": {
|
||||
"version": "2.1.2",
|
||||
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
|
||||
|
|
@ -23519,8 +23479,7 @@
|
|||
"prettier": {
|
||||
"version": "2.0.5",
|
||||
"resolved": "https://registry.npmjs.org/prettier/-/prettier-2.0.5.tgz",
|
||||
"integrity": "sha512-7PtVymN48hGcO4fGjybyBSIWDsLU4H4XlvOHfq91pz9kkGlonzwTfYkaIEwiRg/dAJF9YlbsduBAgtYLi+8cFg==",
|
||||
"dev": true
|
||||
"integrity": "sha512-7PtVymN48hGcO4fGjybyBSIWDsLU4H4XlvOHfq91pz9kkGlonzwTfYkaIEwiRg/dAJF9YlbsduBAgtYLi+8cFg=="
|
||||
},
|
||||
"prettier-linter-helpers": {
|
||||
"version": "1.0.0",
|
||||
|
|
@ -25815,9 +25774,9 @@
|
|||
"requires": {
|
||||
"@fortawesome/fontawesome-free": "^5.15.4",
|
||||
"css-loader": "^6.2.0",
|
||||
"css-minimizer-webpack-plugin": "*",
|
||||
"css-minimizer-webpack-plugin": "^3.0.2",
|
||||
"html-webpack-plugin": "^5.3.2",
|
||||
"mini-css-extract-plugin": "*",
|
||||
"mini-css-extract-plugin": "^2.2.0",
|
||||
"monaco-editor": "^0.26.1",
|
||||
"monaco-yaml": "file:../..",
|
||||
"webpack": "^5.48.0",
|
||||
|
|
@ -27201,8 +27160,7 @@
|
|||
"prettier": {
|
||||
"version": "2.0.5",
|
||||
"resolved": "https://registry.npmjs.org/prettier/-/prettier-2.0.5.tgz",
|
||||
"integrity": "sha512-7PtVymN48hGcO4fGjybyBSIWDsLU4H4XlvOHfq91pz9kkGlonzwTfYkaIEwiRg/dAJF9YlbsduBAgtYLi+8cFg==",
|
||||
"dev": true
|
||||
"integrity": "sha512-7PtVymN48hGcO4fGjybyBSIWDsLU4H4XlvOHfq91pz9kkGlonzwTfYkaIEwiRg/dAJF9YlbsduBAgtYLi+8cFg=="
|
||||
},
|
||||
"prettier-linter-helpers": {
|
||||
"version": "1.0.0",
|
||||
|
|
@ -29497,9 +29455,9 @@
|
|||
"requires": {
|
||||
"@fortawesome/fontawesome-free": "^5.15.4",
|
||||
"css-loader": "^6.2.0",
|
||||
"css-minimizer-webpack-plugin": "*",
|
||||
"css-minimizer-webpack-plugin": "^3.0.2",
|
||||
"html-webpack-plugin": "^5.3.2",
|
||||
"mini-css-extract-plugin": "*",
|
||||
"mini-css-extract-plugin": "^2.2.0",
|
||||
"monaco-editor": "^0.26.1",
|
||||
"monaco-yaml": "file:../..",
|
||||
"webpack": "^5.48.0",
|
||||
|
|
|
|||
10
package.json
10
package.json
|
|
@ -4,10 +4,7 @@
|
|||
"description": "YAML plugin for the Monaco Editor",
|
||||
"homepage": "https://monaco-yaml.js.org",
|
||||
"scripts": {
|
||||
"watch": "tsc -p ./src --watch",
|
||||
"compile": "rimraf ./out && tsc",
|
||||
"bundle": "rimraf ./lib && node ./scripts/bundle-esm",
|
||||
"prepack": "npm run compile && npm run bundle",
|
||||
"prepack": "node build.js",
|
||||
"prepare": "husky install",
|
||||
"lint": "eslint . && prettier --check ."
|
||||
},
|
||||
|
|
@ -36,6 +33,7 @@
|
|||
"dependencies": {
|
||||
"@types/json-schema": "^7.0.9",
|
||||
"js-yaml": "^3.14.1",
|
||||
"prettier": "2.0.5",
|
||||
"yaml-ast-parser-custom-tags": "^0.0.43"
|
||||
},
|
||||
"peerDependencies": {
|
||||
|
|
@ -44,14 +42,12 @@
|
|||
"devDependencies": {
|
||||
"@typescript-eslint/eslint-plugin": "^4.29.0",
|
||||
"@typescript-eslint/parser": "^4.29.0",
|
||||
"esbuild": "^0.12.20",
|
||||
"eslint": "^7.32.0",
|
||||
"eslint-config-remcohaszing": "^3.5.0",
|
||||
"husky": "^7.0.1",
|
||||
"lint-staged": "^11.1.1",
|
||||
"monaco-editor": "^0.26.1",
|
||||
"monaco-plugin-helpers": "^1.0.3",
|
||||
"prettier": "2.0.5",
|
||||
"rimraf": "^3.0.2",
|
||||
"typescript": "^4.3.5",
|
||||
"yaml-language-server": "^0.11.1"
|
||||
},
|
||||
|
|
|
|||
|
|
@ -1,58 +0,0 @@
|
|||
const { join } = require('path');
|
||||
|
||||
const helpers = require('monaco-plugin-helpers');
|
||||
|
||||
const REPO_ROOT = join(__dirname, '../');
|
||||
|
||||
helpers.packageESM({
|
||||
repoRoot: REPO_ROOT,
|
||||
esmSource: 'out/esm',
|
||||
esmDestination: 'lib/esm',
|
||||
entryPoints: ['monaco.contribution.js', 'yamlMode.js', 'yaml.worker.js'],
|
||||
resolveAlias: {
|
||||
'vscode-nls': join(REPO_ROOT, 'out/esm/fillers/vscode-nls.js'),
|
||||
'vscode-json-languageservice/lib/umd/services/jsonValidation': join(
|
||||
REPO_ROOT,
|
||||
'node_modules/vscode-json-languageservice/lib/esm/services/jsonValidation.js',
|
||||
),
|
||||
'vscode-json-languageservice': join(
|
||||
REPO_ROOT,
|
||||
'node_modules/vscode-json-languageservice/lib/esm/jsonLanguageService.js',
|
||||
),
|
||||
'vscode-json-languageservice/lib/umd/services/jsonHover': join(
|
||||
REPO_ROOT,
|
||||
'node_modules/vscode-json-languageservice/lib/esm/services/jsonHover.js',
|
||||
),
|
||||
'vscode-json-languageservice/lib/umd/services/jsonDocumentSymbols': join(
|
||||
REPO_ROOT,
|
||||
'node_modules/vscode-json-languageservice/lib/esm/services/jsonDocumentSymbols.js',
|
||||
),
|
||||
'vscode-json-languageservice/lib/umd/services/jsonSchemaService': join(
|
||||
REPO_ROOT,
|
||||
'node_modules/vscode-json-languageservice/lib/esm/services/jsonSchemaService.js',
|
||||
),
|
||||
|
||||
'vscode-json-languageservice/lib/umd/services/jsonCompletion': join(
|
||||
REPO_ROOT,
|
||||
'node_modules/vscode-json-languageservice/lib/esm/services/jsonCompletion.js',
|
||||
),
|
||||
'vscode-json-languageservice/lib/umd/services/jsonDefinition': join(
|
||||
REPO_ROOT,
|
||||
'node_modules/vscode-json-languageservice/lib/esm/services/jsonDefinition.js',
|
||||
),
|
||||
'yaml-language-server': join(
|
||||
REPO_ROOT,
|
||||
'node_modules/yaml-language-server/lib/esm/languageservice/yamlLanguageService.js',
|
||||
),
|
||||
prettier: join(REPO_ROOT, 'node_modules/prettier/standalone.js'),
|
||||
'prettier/parser-yaml': join(REPO_ROOT, 'node_modules/prettier/parser-yaml.js'),
|
||||
},
|
||||
resolveSkip: ['monaco-editor', 'monaco-editor-core', 'js-yaml', 'yaml-ast-parser-custom-tags'],
|
||||
destinationFolderSimplification: {
|
||||
// eslint-disable-next-line camelcase
|
||||
node_modules: '_deps',
|
||||
'jsonc-parser/lib/esm': 'jsonc-parser',
|
||||
'vscode-languageserver-types/lib/esm': 'vscode-languageserver-types',
|
||||
'vscode-uri/lib/esm': 'vscode-uri',
|
||||
},
|
||||
});
|
||||
|
|
@ -10,7 +10,7 @@ import {
|
|||
Uri,
|
||||
} from 'monaco-editor/esm/vs/editor/editor.api';
|
||||
import * as ls from 'vscode-languageserver-types';
|
||||
import { CustomFormatterOptions } from 'yaml-language-server';
|
||||
import { CustomFormatterOptions } from 'yaml-language-server/lib/esm/languageservice/yamlLanguageService';
|
||||
|
||||
import { LanguageServiceDefaultsImpl } from './monaco.contribution';
|
||||
import { YAMLWorker } from './yamlWorker';
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
import { worker } from 'monaco-editor/esm/vs/editor/editor.api';
|
||||
import * as ls from 'vscode-languageserver-types';
|
||||
import * as yamlService from 'yaml-language-server';
|
||||
import * as yamlService from 'yaml-language-server/lib/esm/languageservice/yamlLanguageService';
|
||||
|
||||
let defaultSchemaRequestService: (url: string) => PromiseLike<string>;
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue