2022年3月26日土曜日

monaco-editor に入門する

monaco-editor リポジトリのサンプル「browser-esm-webpack-monaco-plugin」を実行するところまで。

monaco-edito サンプルの作成

npm プロジェクトの初期化

いつもの。

npm init

サンプルコードのコピー

monaco-editor の sample から、 browser-esm-webpack-monaco-plugin のソースコードをコピー。

monaco-editor/samples at e77825074dc019aebc7b28368428d16226d9ab8b · microsoft/monaco-editor

必要パッケージのインストール

npm install --save monaco-editor
npm install --save-dev webpack webpack-cli monaco-editor-webpack-plugin style-loader css-loader file-loader

ビルド

以下コマンドでビルドが成功することを確認。

npx webpack --mode=development

動作確認

webpack-dev-server で、ローカルサーバーを立ち上げ、動作確認する。

必要パッケージのインストール

npm install --save-dev webpack-dev-server

package.json の更新

scripts に、ビルドで使いそうなコマンドを追加。

webpack-dev-server を使うのは "start": "webpack serve" の定義部分。

また、webpack-dev-server をインストールしたので、 devDependencieswebpack-dev-server が追加されている。

diff --git a/js/monaco-editor/firststep/package.json b/js/monaco-editor/firststep/package.json
index 44eacaa..bd4660e 100644
--- a/js/monaco-editor/firststep/package.json
+++ b/js/monaco-editor/firststep/package.json
@@ -4,7 +4,11 @@
   "description": "",
   "main": "index.js",
   "scripts": {
-    "test": "echo \"Error: no test specified\" && exit 1"
+    "start": "webpack serve",
+    "test": "echo \"Error: no test specified\" && exit 1",
+    "build": "webpack",
+    "build:dev": "webpack --mode=development",
+    "build:pro": "webpack --mode=production"
   },
   "author": "mikoto2000",
   "license": "MIT",
@@ -17,6 +21,7 @@
     "monaco-editor-webpack-plugin": "^7.0.1",
     "style-loader": "^3.3.1",
     "webpack": "^5.70.0",
-    "webpack-cli": "^4.9.2"
+    "webpack-cli": "^4.9.2",
+    "webpack-dev-server": "^4.7.4"
   }
 }

webpack.config.json を更新

  • デフォルトのモードを development に変更
  • ./dist のパスを変数化して共有
  • devServer セクションに webpack-dev-server の設定を追加
diff --git a/js/monaco-editor/firststep/webpack.config.js b/js/monaco-editor/firststep/webpack.config.js
index 823fa44..8b5ea53 100644
--- a/js/monaco-editor/firststep/webpack.config.js
+++ b/js/monaco-editor/firststep/webpack.config.js
@@ -1,13 +1,19 @@
 const path = require('path');
 const MonacoWebpackPlugin = require('monaco-editor-webpack-plugin');

+const distPath = path.resolve(__dirname, 'dist');
+
 module.exports = {
-    mode: process.env.NODE_ENV,
+    mode: 'development',
     entry: './index.js',
     output: {
-        path: path.resolve(__dirname, 'dist'),
+        path: distPath,
         filename: '[name].bundle.js'
     },
+    devServer: {
+        static: distPath,
+        open: true
+    },
     module: {
         rules: [
             {

webpack-dev-server の設定は以下の通り。

  • devServe.static: サーバーのドキュメントルート
  • devServe.open: 起動時にブラウザを開く

動作確認

webpack-dev-server を立ち上げて動作確認。

npx webpack serve

この作業を以下 PR にまとめたので、必要があれば参照してください。

Monaco firststep by mikoto2000 · Pull Request #45 · mikoto2000/MiscellaneousStudy

参考資料

0 件のコメント:

コメントを投稿