mirror of
https://github.com/danbulant/monaco-yaml
synced 2026-07-06 03:20:43 +00:00
Merge branch 'main' into update-dependencies
This commit is contained in:
commit
5507d53dee
7 changed files with 126 additions and 12742 deletions
25
.github/workflows/ci.yaml
vendored
25
.github/workflows/ci.yaml
vendored
|
|
@ -42,16 +42,15 @@ jobs:
|
||||||
with: { node-version: 16 }
|
with: { node-version: 16 }
|
||||||
- run: npm ci
|
- run: npm ci
|
||||||
- run: npx tsc
|
- run: npx tsc
|
||||||
|
# release:
|
||||||
release:
|
# runs-on: ubuntu-latest
|
||||||
runs-on: ubuntu-latest
|
# needs: [eslint, pack, prettier, tsc]
|
||||||
needs: [eslint, pack, prettier, tsc]
|
# if: startsWith(github.ref, 'refs/tags/')
|
||||||
if: startsWith(github.ref, 'refs/tags/')
|
# steps:
|
||||||
steps:
|
# - uses: actions/checkout@v2
|
||||||
- uses: actions/checkout@v2
|
# - uses: actions/setup-node@v2
|
||||||
- uses: actions/setup-node@v2
|
# with: { node-version: 16 }
|
||||||
with: { node-version: 16 }
|
# - run: npm ci
|
||||||
- run: npm ci
|
# - run: npm publish
|
||||||
- run: npm publish
|
# env:
|
||||||
env:
|
# NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
|
||||||
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
|
|
||||||
|
|
|
||||||
1
.npmrc
Normal file
1
.npmrc
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
lockfile-version = 3
|
||||||
98
README.md
98
README.md
|
|
@ -85,7 +85,43 @@ editor.create(document.createElement('editor'), {
|
||||||
});
|
});
|
||||||
```
|
```
|
||||||
|
|
||||||
Also make sure to register the web worker.
|
Also make sure to register the web worker. When using Webpack 5, this looks like the code below.
|
||||||
|
Other bundlers may use a different syntax, but the idea is the same. Languages you don’t used can be
|
||||||
|
omitted.
|
||||||
|
|
||||||
|
```js
|
||||||
|
window.MonacoEnvironment = {
|
||||||
|
getWorker(moduleId, label) {
|
||||||
|
switch (label) {
|
||||||
|
case 'editorWorkerService':
|
||||||
|
return new Worker(new URL('monaco-editor/esm/vs/editor/editor.worker', import.meta.url));
|
||||||
|
case 'css':
|
||||||
|
case 'less':
|
||||||
|
case 'scss':
|
||||||
|
return new Worker(new URL('monaco-editor/esm/vs/language/css/css.worker', import.meta.url));
|
||||||
|
case 'handlebars':
|
||||||
|
case 'html':
|
||||||
|
case 'razor':
|
||||||
|
return new Worker(
|
||||||
|
new URL('monaco-editor/esm/vs/language/html/html.worker', import.meta.url),
|
||||||
|
);
|
||||||
|
case 'json':
|
||||||
|
return new Worker(
|
||||||
|
new URL('monaco-editor/esm/vs/language/json/json.worker', import.meta.url),
|
||||||
|
);
|
||||||
|
case 'javascript':
|
||||||
|
case 'typescript':
|
||||||
|
return new Worker(
|
||||||
|
new URL('monaco-editor/esm/vs/language/typescript/ts.worker', import.meta.url),
|
||||||
|
);
|
||||||
|
case 'yaml':
|
||||||
|
return new Worker(new URL('monaco-yaml/lib/esm/yaml.worker', import.meta.url));
|
||||||
|
default:
|
||||||
|
throw new Error(`Unknown label ${label}`);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
};
|
||||||
|
```
|
||||||
|
|
||||||
## Examples
|
## Examples
|
||||||
|
|
||||||
|
|
@ -96,6 +132,66 @@ A running example: 
|
||||||
Some usage examples can be found in the
|
Some usage examples can be found in the
|
||||||
[examples](https://github.com/remcohaszing/monaco-yaml/tree/main/examples) directory.
|
[examples](https://github.com/remcohaszing/monaco-yaml/tree/main/examples) directory.
|
||||||
|
|
||||||
|
## FAQ
|
||||||
|
|
||||||
|
### Does this work with the Monaco UMD bundle?
|
||||||
|
|
||||||
|
No. Only ESM is supported.
|
||||||
|
|
||||||
|
### Does this work with Monaco Editor from a CDN?
|
||||||
|
|
||||||
|
No, because these use a UMD bundle, which isn’t supported.
|
||||||
|
|
||||||
|
### Does this work with `@monaco-editor/loader` or `@monaco-editor/react`?
|
||||||
|
|
||||||
|
No. These packages pull in the Monaco UMD bundle from a CDN. Because UMD isn’t supported, neither
|
||||||
|
are these packages.
|
||||||
|
|
||||||
|
### Is the web worker necessary?
|
||||||
|
|
||||||
|
Yes. The web worker provides the core functionality of `monaco-yaml`.
|
||||||
|
|
||||||
|
### Does it work without a bundler?
|
||||||
|
|
||||||
|
No. `monaco-yaml` uses dependencies from `node_modules`, so they can be deduped and your bundle size
|
||||||
|
is decreased. This comes at the cost of not being able to use it without a bundler.
|
||||||
|
|
||||||
|
### How do I integrate `monaco-yaml` with a framework? (Angular, React, Vue, etc.)
|
||||||
|
|
||||||
|
`monaco-yaml` only uses the Monaco Editor. It’s not tied to a framework, all that’s needed is a DOM
|
||||||
|
node to attach the Monaco Editor to. See the
|
||||||
|
[Monaco Editor examples](https://github.com/microsoft/monaco-editor/tree/main/monaco-editor-samples)
|
||||||
|
for examples on how to integrate Monaco Editor in your project, then configure `monaco-yaml` as
|
||||||
|
described above.
|
||||||
|
|
||||||
|
### Does `monaco-yaml` work with `create-react-app`?
|
||||||
|
|
||||||
|
Yes, but you’ll have to eject. See
|
||||||
|
[#92 (comment)](https://github.com/remcohaszing/monaco-yaml/issues/92#issuecomment-905836058) for
|
||||||
|
details.
|
||||||
|
|
||||||
|
### Why isn’t `monaco-yaml` working? Official Monaco language extensions do work.
|
||||||
|
|
||||||
|
This is most likely due to the fact that `monaco-yaml` is using a different instance of the
|
||||||
|
`monaco-editor` package than you are. This is something you’ll want to avoid regardless of
|
||||||
|
`monaco-editor`, because it means your bundle is significantly larger than it needs to be. This is
|
||||||
|
likely caused by one of the following issues:
|
||||||
|
|
||||||
|
- A code splitting misconfiguration
|
||||||
|
|
||||||
|
To solve this, try inspecting your bundle using for example
|
||||||
|
[webpack-bundle-analyzer](https://github.com/webpack-contrib/webpack-bundle-analyzer). If
|
||||||
|
`monaco-editor` is in there twice, this is the issue. It’s up to you to solve this, as it’s
|
||||||
|
project-specific.
|
||||||
|
|
||||||
|
- You’re using a package which imports `monaco-editor` for you, but it’s using a different version.
|
||||||
|
|
||||||
|
You can find out why the `monaco-editor` is installed using `npm ls monaco-editor` or
|
||||||
|
`yarn why monaco-editor`. It should exist only once, but it’s ok if it’s deduped.
|
||||||
|
|
||||||
|
You may be able to solve this by deleting your `node_modules` folder and `package-lock.json` or
|
||||||
|
`yarn.lock`, then running `npm install` or `yarn install` respectively.
|
||||||
|
|
||||||
## Contributing
|
## Contributing
|
||||||
|
|
||||||
Please see our [contributing guidelines](CONTRIBUTING.md)
|
Please see our [contributing guidelines](CONTRIBUTING.md)
|
||||||
|
|
|
||||||
|
|
@ -13,7 +13,7 @@
|
||||||
"css-minimizer-webpack-plugin": "^3.0.0",
|
"css-minimizer-webpack-plugin": "^3.0.0",
|
||||||
"html-webpack-plugin": "^5.0.0",
|
"html-webpack-plugin": "^5.0.0",
|
||||||
"mini-css-extract-plugin": "^2.0.0",
|
"mini-css-extract-plugin": "^2.0.0",
|
||||||
"monaco-editor": "^0.29.0",
|
"monaco-editor": "^0.30.0",
|
||||||
"monaco-yaml": "file:../..",
|
"monaco-yaml": "file:../..",
|
||||||
"ts-loader": "^9.0.0",
|
"ts-loader": "^9.0.0",
|
||||||
"typescript": "^4.0.0",
|
"typescript": "^4.0.0",
|
||||||
|
|
|
||||||
12730
package-lock.json
generated
12730
package-lock.json
generated
File diff suppressed because it is too large
Load diff
|
|
@ -1,6 +1,6 @@
|
||||||
{
|
{
|
||||||
"name": "monaco-yaml",
|
"name": "monaco-yaml",
|
||||||
"version": "3.2.1",
|
"version": "4.0.0-alpha.0",
|
||||||
"description": "YAML plugin for the Monaco Editor",
|
"description": "YAML plugin for the Monaco Editor",
|
||||||
"homepage": "https://monaco-yaml.js.org",
|
"homepage": "https://monaco-yaml.js.org",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
|
|
@ -47,7 +47,7 @@
|
||||||
"yaml": "^2.0.0-8"
|
"yaml": "^2.0.0-8"
|
||||||
},
|
},
|
||||||
"peerDependencies": {
|
"peerDependencies": {
|
||||||
"monaco-editor": ">=0.22"
|
"monaco-editor": ">=0.30"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@typescript-eslint/eslint-plugin": "^4.0.0",
|
"@typescript-eslint/eslint-plugin": "^4.0.0",
|
||||||
|
|
@ -57,7 +57,7 @@
|
||||||
"eslint-config-remcohaszing": "^3.0.0",
|
"eslint-config-remcohaszing": "^3.0.0",
|
||||||
"husky": "^7.0.0",
|
"husky": "^7.0.0",
|
||||||
"lint-staged": "^11.0.0",
|
"lint-staged": "^11.0.0",
|
||||||
"monaco-editor": "^0.29.0",
|
"monaco-editor": "^0.30.0",
|
||||||
"type-fest": "^2.0.0",
|
"type-fest": "^2.0.0",
|
||||||
"typescript": "^4.0.0",
|
"typescript": "^4.0.0",
|
||||||
"yaml-language-server": "^1.0.0"
|
"yaml-language-server": "^1.0.0"
|
||||||
|
|
|
||||||
|
|
@ -63,13 +63,13 @@ export function createDiagnosticsAdapter(
|
||||||
const model = editor.getModel(resource);
|
const model = editor.getModel(resource);
|
||||||
// Return value from getModel can be null if model not found
|
// Return value from getModel can be null if model not found
|
||||||
// (e.g. if user navigates away from editor)
|
// (e.g. if user navigates away from editor)
|
||||||
if (model && model.getModeId() === languageId) {
|
if (model && model.getLanguageId() === languageId) {
|
||||||
editor.setModelMarkers(model, languageId, markers);
|
editor.setModelMarkers(model, languageId, markers);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
const onModelAdd = (model: editor.IModel): void => {
|
const onModelAdd = (model: editor.IModel): void => {
|
||||||
if (model.getModeId() !== languageId) {
|
if (model.getLanguageId() !== languageId) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -107,7 +107,7 @@ export function createDiagnosticsAdapter(
|
||||||
});
|
});
|
||||||
defaults.onDidChange(() => {
|
defaults.onDidChange(() => {
|
||||||
for (const model of editor.getModels()) {
|
for (const model of editor.getModels()) {
|
||||||
if (model.getModeId() === languageId) {
|
if (model.getLanguageId() === languageId) {
|
||||||
onModelRemoved(model);
|
onModelRemoved(model);
|
||||||
onModelAdd(model);
|
onModelAdd(model);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue