mirror of
https://github.com/danbulant/monaco-yaml
synced 2026-05-19 12:19:02 +00:00
58 lines
2.2 KiB
JavaScript
Executable file
58 lines
2.2 KiB
JavaScript
Executable file
const { build } = require('esbuild');
|
||
|
||
const { dependencies, peerDependencies } = require('./package.json');
|
||
|
||
build({
|
||
entryPoints: ['src/index.ts', 'src/yaml.worker.ts'],
|
||
bundle: true,
|
||
external: Object.keys({ ...dependencies, ...peerDependencies }),
|
||
logLevel: 'info',
|
||
outdir: '.',
|
||
sourcemap: true,
|
||
format: 'esm',
|
||
target: ['es2019'],
|
||
plugins: [
|
||
{
|
||
name: 'alias',
|
||
setup({ onResolve }) {
|
||
// The file monaco-yaml/lib/esm/schemaSelectionHandlers.js imports code from the language
|
||
// server part that we don’t want.
|
||
onResolve({ filter: /\/schemaSelectionHandlers$/ }, () => ({
|
||
path: require.resolve('./src/fillers/schemaSelectionHandlers.ts'),
|
||
}));
|
||
// The yaml language service only imports re-exports of vscode-languageserver-types from
|
||
// vscode-languageserver.
|
||
onResolve({ filter: /^vscode-languageserver(\/node|-protocol)?$/ }, () => ({
|
||
path: 'vscode-languageserver-types',
|
||
external: true,
|
||
}));
|
||
// The yaml language service uses path. We can stub it using path-browserify.
|
||
onResolve({ filter: /^path$/ }, () => ({
|
||
path: 'path-browserify',
|
||
external: true,
|
||
}));
|
||
// The main prettier entry point contains all of Prettier.
|
||
// The standalone bundle is smaller and works fine for us.
|
||
onResolve({ filter: /^prettier/ }, ({ path }) => ({
|
||
path: path === 'prettier' ? 'prettier/standalone.js' : `${path}.js`,
|
||
external: true,
|
||
}));
|
||
// This tiny filler implementation serves all our needs.
|
||
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.
|
||
onResolve({ filter: /\/umd\// }, (args) => ({
|
||
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);
|
||
});
|