Use Snowpack to extract and build JavaScript Modules and run in the browser.
- Download and unzip this gist
npm installnpm run snowpack# optional, should run by default duringnpm installnpm run serve
TODO
Use Snowpack to extract and build JavaScript Modules and run in the browser.
npm installnpm run snowpack # optional, should run by default during npm installnpm run serveTODO
| <!DOCTYPE html> | |
| <html lang="en"> | |
| <head> | |
| <meta charset="utf-8"> | |
| <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=0"> | |
| <style> | |
| html, body, #monaco { | |
| height: 100%; | |
| width: 100%; | |
| margin: 0; | |
| padding: 0; | |
| overflow: hidden; | |
| } | |
| </style> | |
| </head> | |
| <body> | |
| <div id="monaco"></div> | |
| <script type="module"> | |
| import * as Monaco from '/web_modules/monaco-editor.js' | |
| self.MonacoEnvironment = { | |
| getWorker(workerId, label) { | |
| return new Worker( | |
| self.MonacoEnvironment.getWorkerUrl(workerId, label), | |
| { | |
| name: label, | |
| type: 'module' | |
| } | |
| ); | |
| }, | |
| getWorkerUrl: function(moduleId, label) { | |
| if (label === 'json') { | |
| return '/web_modules/monaco-editor/esm/vs/language/json/json.worker.js'; | |
| } | |
| if (label === 'css') { | |
| return '/web_modules/monaco-editor/esm/vs/language/css/css.worker.js'; | |
| } | |
| if (label === 'html') { | |
| return '/web_modules/monaco-editor/esm/vs/language/html/html.worker.js'; | |
| } | |
| if (label === 'typescript' || label === 'javascript') { | |
| return '/web_modules/monaco-editor/esm/vs/language/typescript/ts.worker.js'; | |
| } | |
| return '/web_modules/monaco-editor/esm/vs/editor/editor.worker.js'; | |
| } | |
| }; | |
| const editor = Monaco.editor.create(document.getElementById('monaco'), { | |
| value: document.documentElement.outerHTML, | |
| language: 'html' | |
| }); | |
| window.addEventListener('resize', () => editor.layout(), false); | |
| </script> | |
| </body> | |
| </html> |
| { | |
| "name": "monaco-snowpack-demo", | |
| "version": "0.0.1", | |
| "description": "A bare bones/minimal demo of Monaco working via Snowpack (and JS Modules)", | |
| "scripts": { | |
| "serve": "python3 -m http.server 8008", | |
| "snowpack": "snowpack", | |
| "prepare": "npm run snowpack" | |
| }, | |
| "keywords": ["monaco", "snowpack", "vs code"], | |
| "author": "Matt Powell", | |
| "license": "MIT", | |
| "devDependencies": { | |
| "monaco-editor": "^0.20.0", | |
| "postcss-url": "^8.0.0", | |
| "snowpack": "^1.4.0", | |
| "rollup-plugin-postcss": "^2.0.6" | |
| } | |
| } |
| const postcss = require('rollup-plugin-postcss'); | |
| const url = require('postcss-url'); | |
| module.exports = { | |
| installOptions: { | |
| dest: "web_modules", | |
| optimize: true | |
| }, | |
| webDependencies: [ | |
| 'monaco-editor', | |
| 'monaco-editor/esm/vs/language/json/json.worker.js', | |
| 'monaco-editor/esm/vs/language/css/css.worker.js', | |
| 'monaco-editor/esm/vs/language/html/html.worker.js', | |
| 'monaco-editor/esm/vs/language/typescript/ts.worker.js', | |
| 'monaco-editor/esm/vs/editor/editor.worker.js' | |
| ], | |
| rollup: { | |
| plugins: [ | |
| postcss({ | |
| plugins: [url({ | |
| url: 'inline' | |
| })] | |
| }) | |
| ] | |
| } | |
| }; |