diff --git a/samples/browser-esm-esbuild/.gitignore b/samples/browser-esm-esbuild/.gitignore new file mode 100644 index 00000000..1da28803 --- /dev/null +++ b/samples/browser-esm-esbuild/.gitignore @@ -0,0 +1,3 @@ +dist/**/*.js +dist/**/*.ttf +dist/**/*.css diff --git a/samples/browser-esm-esbuild/build.js b/samples/browser-esm-esbuild/build.js new file mode 100644 index 00000000..14bad23a --- /dev/null +++ b/samples/browser-esm-esbuild/build.js @@ -0,0 +1,45 @@ +const esbuild = require('esbuild'); +const path = require('path'); +const { removeDir } = require('../../build/utils'); + +removeDir(path.join(__dirname, 'dist')); + +const workerEntryPoints = [ + 'vs/language/json/json.worker.js', + 'vs/language/css/css.worker.js', + 'vs/language/html/html.worker.js', + 'vs/language/typescript/ts.worker.js', + 'vs/editor/editor.worker.js' +]; + +build({ + entryPoints: workerEntryPoints.map((entry) => `../node_modules/monaco-editor/esm/${entry}`), + bundle: true, + format: 'iife', + outbase: '../node_modules/monaco-editor/esm/', + outdir: path.join(__dirname, 'dist') +}); + +build({ + entryPoints: ['index.js'], + bundle: true, + format: 'iife', + outdir: path.join(__dirname, 'dist'), + loader: { + '.ttf': 'file' + } +}); + +/** + * @param {import ('esbuild').BuildOptions} opts + */ +function build(opts) { + esbuild.build(opts).then((result) => { + if (result.errors.length > 0) { + console.error(result.errors); + } + if (result.warnings.length > 0) { + console.error(result.warnings); + } + }); +} diff --git a/samples/browser-esm-esbuild/dist/index.html b/samples/browser-esm-esbuild/dist/index.html new file mode 100644 index 00000000..338d807a --- /dev/null +++ b/samples/browser-esm-esbuild/dist/index.html @@ -0,0 +1,12 @@ + + +
+ + + + + + + + + diff --git a/samples/browser-esm-esbuild/index.html b/samples/browser-esm-esbuild/index.html new file mode 100644 index 00000000..214da240 --- /dev/null +++ b/samples/browser-esm-esbuild/index.html @@ -0,0 +1,18 @@ + + + + + + ++$/browser-esm-esbuild> npm run build ++ + Then, open the ./dist folder. + + diff --git a/samples/browser-esm-esbuild/index.js b/samples/browser-esm-esbuild/index.js new file mode 100644 index 00000000..49bc665b --- /dev/null +++ b/samples/browser-esm-esbuild/index.js @@ -0,0 +1,24 @@ +import * as monaco from 'monaco-editor/esm/vs/editor/editor.main.js'; + +self.MonacoEnvironment = { + getWorkerUrl: function (moduleId, label) { + if (label === 'json') { + return './vs/language/json/json.worker.js'; + } + if (label === 'css' || label === 'scss' || label === 'less') { + return './vs/language/css/css.worker.js'; + } + if (label === 'html' || label === 'handlebars' || label === 'razor') { + return './vs/language/html/html.worker.js'; + } + if (label === 'typescript' || label === 'javascript') { + return './vs/language/typescript/ts.worker.js'; + } + return './vs/editor/editor.worker.js'; + } +}; + +monaco.editor.create(document.getElementById('container'), { + value: ['function x() {', '\tconsole.log("Hello world!");', '}'].join('\n'), + language: 'javascript' +}); diff --git a/samples/browser-esm-esbuild/package.json b/samples/browser-esm-esbuild/package.json new file mode 100644 index 00000000..ba1ff2ae --- /dev/null +++ b/samples/browser-esm-esbuild/package.json @@ -0,0 +1,6 @@ +{ + "name": "helloworld", + "scripts": { + "build": "node ./build.js" + } +}