From 90d895a21403d1adbb3fc956665465097274fb50 Mon Sep 17 00:00:00 2001 From: Remco Haszing Date: Mon, 15 Nov 2021 18:30:47 +0100 Subject: [PATCH 1/2] Flatten output paths MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit `lib/esm/monaco.contribution.js` → `index.js` `lib/esm/yaml.worker.js` → `yaml.worker.js` Closes #132 --- .gitignore | 4 +- .prettierignore | 6 +- build.js | 129 +++++++++++------------ examples/demo/src/index.ts | 2 +- examples/minimal-vite/index.js | 2 +- package.json | 7 +- src/{monaco.contribution.ts => index.ts} | 0 7 files changed, 72 insertions(+), 78 deletions(-) rename src/{monaco.contribution.ts => index.ts} (100%) diff --git a/.gitignore b/.gitignore index 8864477..a5287cc 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,7 @@ dist/ node_modules/ -/lib/ +/index.js +/yaml.worker.js *.log +*.map *.tgz diff --git a/.prettierignore b/.prettierignore index e385c65..3a06416 100644 --- a/.prettierignore +++ b/.prettierignore @@ -1,3 +1,3 @@ -/dist/ -/lib/ -/out/ +dist/ +/index.js +/yaml.worker.js diff --git a/build.js b/build.js index fa9dd83..413b941 100755 --- a/build.js +++ b/build.js @@ -1,72 +1,65 @@ -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 }) { - // The yaml language service only imports re-exports of vscode-languageserver-types from - // vscode-languageserver. - onResolve({ filter: /^vscode-languageserver-textdocument$/ }, () => ({ - 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. - onResolve({ filter: /^vscode-languageserver(\/node)?$/ }, () => ({ - 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. - onResolve({ filter: /^vscode-languageserver-(protocol|types)$/ }, () => ({ - 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$/ }, () => ({ - 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: 'prettier/standalone', - 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); - }); +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 yaml language service only imports re-exports of vscode-languageserver-types from + // vscode-languageserver. + onResolve({ filter: /^vscode-languageserver-textdocument$/ }, () => ({ + 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. + onResolve({ filter: /^vscode-languageserver(\/node)?$/ }, () => ({ + 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. + onResolve({ filter: /^vscode-languageserver-(protocol|types)$/ }, () => ({ + 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$/ }, () => ({ + 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: 'prettier/standalone', + 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); +}); diff --git a/examples/demo/src/index.ts b/examples/demo/src/index.ts index 48e73e1..2d8901e 100644 --- a/examples/demo/src/index.ts +++ b/examples/demo/src/index.ts @@ -31,7 +31,7 @@ window.MonacoEnvironment = { case 'editorWorkerService': return new Worker(new URL('monaco-editor/esm/vs/editor/editor.worker', import.meta.url)); 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: throw new Error(`Unknown label ${label}`); } diff --git a/examples/minimal-vite/index.js b/examples/minimal-vite/index.js index e08bf59..abbd5df 100644 --- a/examples/minimal-vite/index.js +++ b/examples/minimal-vite/index.js @@ -1,7 +1,7 @@ import { editor, Uri } from 'monaco-editor'; import EditorWorker from 'monaco-editor/esm/vs/editor/editor.worker?worker'; 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 = { getWorker(moduleId, label) { diff --git a/package.json b/package.json index f7a3baa..250bf00 100644 --- a/package.json +++ b/package.json @@ -7,12 +7,11 @@ "prepack": "node build.js", "prepare": "husky install" }, - "main": "./lib/esm/monaco.contribution.js", - "module": "./lib/esm/monaco.contribution.js", "typings": "./index.d.ts", "files": [ - "lib", - "index.d.ts" + "index.js", + "index.d.ts", + "yaml.worker.js" ], "workspaces": [ "examples/*" diff --git a/src/monaco.contribution.ts b/src/index.ts similarity index 100% rename from src/monaco.contribution.ts rename to src/index.ts From 928d33cdc3f00bb06a157dea64f77152ac463285 Mon Sep 17 00:00:00 2001 From: Remco Haszing Date: Tue, 23 Nov 2021 15:12:20 +0100 Subject: [PATCH 2/2] Resolve merge isue --- build.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.js b/build.js index f317daf..1dd52bb 100755 --- a/build.js +++ b/build.js @@ -3,7 +3,7 @@ const { build } = require('esbuild'); const { dependencies, peerDependencies } = require('./package.json'); build({ - entryPoints: ['src/monaco.contribution.ts', 'src/yaml.worker.ts'], + entryPoints: ['src/index.ts', 'src/yaml.worker.ts'], bundle: true, external: Object.keys({ ...dependencies, ...peerDependencies }), logLevel: 'info',