Flatten output paths

`lib/esm/monaco.contribution.js` → `index.js`
`lib/esm/yaml.worker.js` → `yaml.worker.js`

Closes #132
This commit is contained in:
Remco Haszing 2021-11-15 18:30:47 +01:00
parent 545e6a6bc4
commit 90d895a214
No known key found for this signature in database
GPG key ID: 40D9F5FE9155FD3C
7 changed files with 72 additions and 78 deletions

4
.gitignore vendored
View file

@ -1,5 +1,7 @@
dist/ dist/
node_modules/ node_modules/
/lib/ /index.js
/yaml.worker.js
*.log *.log
*.map
*.tgz *.tgz

View file

@ -1,3 +1,3 @@
/dist/ dist/
/lib/ /index.js
/out/ /yaml.worker.js

129
build.js
View file

@ -1,72 +1,65 @@
const { promises: fs } = require('fs');
const { join } = require('path');
const { build } = require('esbuild'); const { build } = require('esbuild');
const { dependencies, peerDependencies } = require('./package.json'); const { dependencies, peerDependencies } = require('./package.json');
fs.rm(join(__dirname, 'lib'), { force: true, recursive: true }) build({
.then(() => entryPoints: ['src/index.ts', 'src/yaml.worker.ts'],
build({ bundle: true,
entryPoints: ['src/monaco.contribution.ts', 'src/yaml.worker.ts'], external: Object.keys({ ...dependencies, ...peerDependencies }),
bundle: true, logLevel: 'info',
external: Object.keys({ ...dependencies, ...peerDependencies }), outdir: '.',
logLevel: 'info', sourcemap: true,
outdir: 'lib/esm', format: 'esm',
sourcemap: true, target: ['es2019'],
format: 'esm', plugins: [
target: ['es2019'], {
plugins: [ name: 'alias',
{ setup({ onResolve }) {
name: 'alias', // The yaml language service only imports re-exports of vscode-languageserver-types from
setup({ onResolve }) { // vscode-languageserver.
// The yaml language service only imports re-exports of vscode-languageserver-types from onResolve({ filter: /^vscode-languageserver-textdocument$/ }, () => ({
// vscode-languageserver. path: 'vscode-languageserver-textdocument/lib/esm/main.js',
onResolve({ filter: /^vscode-languageserver-textdocument$/ }, () => ({ external: true,
path: 'vscode-languageserver-textdocument/lib/esm/main.js', }));
external: true, // The yaml language service only imports re-exports of vscode-languageserver-types from
})); // vscode-languageserver.
// The yaml language service only imports re-exports of vscode-languageserver-types from onResolve({ filter: /^vscode-languageserver(\/node)?$/ }, () => ({
// vscode-languageserver. path: 'vscode-languageserver-types/lib/esm/main.js',
onResolve({ filter: /^vscode-languageserver(\/node)?$/ }, () => ({ external: true,
path: 'vscode-languageserver-types/lib/esm/main.js', }));
external: true, // The yaml language service only imports re-exports of vscode-languageserver-types from
})); // vscode-languageserver.
// The yaml language service only imports re-exports of vscode-languageserver-types from onResolve({ filter: /^vscode-languageserver-(protocol|types)$/ }, () => ({
// vscode-languageserver. path: 'vscode-languageserver-types/lib/esm/main.js',
onResolve({ filter: /^vscode-languageserver-(protocol|types)$/ }, () => ({ external: true,
path: 'vscode-languageserver-types/lib/esm/main.js', }));
external: true, // The yaml language service uses path. We can stub it using path-browserify.
})); onResolve({ filter: /^path$/ }, () => ({
// The yaml language service uses path. We can stub it using path-browserify. path: 'path-browserify',
onResolve({ filter: /^path$/ }, () => ({ external: true,
path: 'path-browserify', }));
external: true, // The main prettier entry point contains all of Prettier.
})); // The standalone bundle is smaller and works fine for us.
// The main prettier entry point contains all of Prettier. onResolve({ filter: /^prettier$/ }, () => ({
// The standalone bundle is smaller and works fine for us. path: 'prettier/standalone',
onResolve({ filter: /^prettier$/ }, () => ({ external: true,
path: 'prettier/standalone', }));
external: true, // This tiny filler implementation serves all our needs.
})); onResolve({ filter: /vscode-nls/ }, () => ({
// This tiny filler implementation serves all our needs. path: require.resolve('./src/fillers/vscode-nls.ts'),
onResolve({ filter: /vscode-nls/ }, () => ({ }));
path: require.resolve('./src/fillers/vscode-nls.ts'), // The language server dependencies tend to write both ESM and UMD output alongside each
})); // other, then use UMD for imports. We prefer ESM.
// The language server dependencies tend to write both ESM and UMD output alongside each onResolve({ filter: /\/umd\// }, (args) => ({
// other, then use UMD for imports. We prefer ESM. path: require.resolve(args.path.replace(/\/umd\//, '/esm/'), {
onResolve({ filter: /\/umd\// }, (args) => ({ paths: [args.resolveDir],
path: require.resolve(args.path.replace(/\/umd\//, '/esm/'), { }),
paths: [args.resolveDir], }));
}), },
})); },
}, ],
}, }).catch((error) => {
], // eslint-disable-next-line no-console
}), console.error(error);
) process.exit(1);
.catch((error) => { });
// eslint-disable-next-line no-console
console.error(error);
process.exit(1);
});

View file

@ -31,7 +31,7 @@ window.MonacoEnvironment = {
case 'editorWorkerService': case 'editorWorkerService':
return new Worker(new URL('monaco-editor/esm/vs/editor/editor.worker', import.meta.url)); return new Worker(new URL('monaco-editor/esm/vs/editor/editor.worker', import.meta.url));
case 'yaml': case 'yaml':
return new Worker(new URL('monaco-yaml/lib/esm/yaml.worker', import.meta.url)); return new Worker(new URL('monaco-yaml/yaml.worker', import.meta.url));
default: default:
throw new Error(`Unknown label ${label}`); throw new Error(`Unknown label ${label}`);
} }

View file

@ -1,7 +1,7 @@
import { editor, Uri } from 'monaco-editor'; import { editor, Uri } from 'monaco-editor';
import EditorWorker from 'monaco-editor/esm/vs/editor/editor.worker?worker'; import EditorWorker from 'monaco-editor/esm/vs/editor/editor.worker?worker';
import { setDiagnosticsOptions } from 'monaco-yaml'; import { setDiagnosticsOptions } from 'monaco-yaml';
import YamlWorker from 'monaco-yaml/lib/esm/yaml.worker?worker'; import YamlWorker from 'monaco-yaml/yaml.worker?worker';
window.MonacoEnvironment = { window.MonacoEnvironment = {
getWorker(moduleId, label) { getWorker(moduleId, label) {

View file

@ -7,12 +7,11 @@
"prepack": "node build.js", "prepack": "node build.js",
"prepare": "husky install" "prepare": "husky install"
}, },
"main": "./lib/esm/monaco.contribution.js",
"module": "./lib/esm/monaco.contribution.js",
"typings": "./index.d.ts", "typings": "./index.d.ts",
"files": [ "files": [
"lib", "index.js",
"index.d.ts" "index.d.ts",
"yaml.worker.js"
], ],
"workspaces": [ "workspaces": [
"examples/*" "examples/*"