両方とも前のリビジョン 前のリビジョン 次のリビジョン | 前のリビジョン |
python:jupyterlab:extension_dev [2025/04/16 06:43] – [拡張機能のインストールとシンボルリンク作成] ともやん | python:jupyterlab:extension_dev [2025/04/21 04:54] (現在) – [package.json、pyproject.toml を Deno 対応する] ともやん |
---|
</WRAP> | </WRAP> |
| |
==== 参考ソースコード ==== | ==== 参考: 最新ドキュメント & ソースコード ==== |
| [[rtd>jupyterlab.readthedocs.io/en/latest/index.html|JupyterLab Documentation — JupyterLab latest documentation]]\\ |
| [[rtd>jupyterlab.readthedocs.io/en/latest/api/modules.html|@jupyterlab — JupyterLab latest documentation]]\\ |
JupyterLab のソースコードは公開されているので、古いドキュメントやネットの文献に惑わされることなく、最新のソースコードから推測で実装可能である😉\\ | JupyterLab のソースコードは公開されているので、古いドキュメントやネットの文献に惑わされることなく、最新のソースコードから推測で実装可能である😉\\ |
[[git>jupyterlab/extension-examples/|jupyterlab/extension-examples: JupyterLab Extensions by Examples]]\\ | [[git>jupyterlab/extension-examples/|jupyterlab/extension-examples: JupyterLab Extensions by Examples]]\\ |
| |
=== package.json、pyproject.toml を Deno 対応する === | === package.json、pyproject.toml を Deno 対応する === |
''package.json'' を編集して ''jlpm'' を ''deno run -A'' に置き換える🤔\\ | ''package.json'' を編集して ''jlpm'' を ''deno run'' に置き換える🤔\\ |
<WRAP color_term> | <WRAP color_term> |
<WRAP color_command><html><pre> | <WRAP color_command><html><pre> |
<font color="#F92672">- "build": "jlpm build:lib && jlpm build:labextension:dev",</font> | <font color="#F92672">- "build": "jlpm build:lib && jlpm build:labextension:dev",</font> |
<font color="#F92672">- "build:prod": "jlpm clean && jlpm build:lib:prod && jlpm build:labextension",</font> | <font color="#F92672">- "build:prod": "jlpm clean && jlpm build:lib:prod && jlpm build:labextension",</font> |
<font color="#A6E22E">+ "build": "deno run -A build:lib && deno run -A build:labextension:dev",</font> | <font color="#A6E22E">+ "build": "deno run build:lib && deno run build:labextension:dev",</font> |
<font color="#A6E22E">+ "build:prod": "deno run -A clean && deno run -A build:lib:prod && deno run -A build:labextension",</font> | <font color="#A6E22E">+ "build:prod": "deno run clean && deno run build:lib:prod && deno run build:labextension",</font> |
<font color="#F8F8F2"> "build:labextension": "jupyter labextension build .",</font> | <font color="#F8F8F2"> "build:labextension": "jupyter labextension build .",</font> |
<font color="#F8F8F2"> "build:labextension:dev": "jupyter labextension build --development True .",</font> | <font color="#F8F8F2"> "build:labextension:dev": "jupyter labextension build --development True .",</font> |
<font color="#F8F8F2"> "build:lib:prod": "tsc",</font> | <font color="#F8F8F2"> "build:lib:prod": "tsc",</font> |
<font color="#F92672">- "clean": "jlpm clean:lib",</font> | <font color="#F92672">- "clean": "jlpm clean:lib",</font> |
<font color="#A6E22E">+ "clean": "deno run -A clean:lib",</font> | <font color="#A6E22E">+ "clean": "deno run clean:lib",</font> |
<font color="#F8F8F2"> "clean:lib": "rimraf lib tsconfig.tsbuildinfo",</font> | <font color="#F8F8F2"> "clean:lib": "rimraf lib tsconfig.tsbuildinfo",</font> |
<font color="#F8F8F2"> "clean:lintcache": "rimraf .eslintcache .stylelintcache",</font> | <font color="#F8F8F2"> "clean:lintcache": "rimraf .eslintcache .stylelintcache",</font> |
<font color="#F92672">- "clean:all": "jlpm clean:lib && jlpm clean:labextension && jlpm clean:lintcache",</font> | <font color="#F92672">- "clean:all": "jlpm clean:lib && jlpm clean:labextension && jlpm clean:lintcache",</font> |
<font color="#F92672">- "eslint": "jlpm eslint:check --fix",</font> | <font color="#F92672">- "eslint": "jlpm eslint:check --fix",</font> |
<font color="#A6E22E">+ "clean:all": "deno run -A clean:lib && deno run -A clean:labextension && deno run -A clean:lintcache",</font> | <font color="#A6E22E">+ "clean:all": "deno run clean:lib && deno run clean:labextension && deno run clean:lintcache",</font> |
<font color="#A6E22E">+ "eslint": "deno run -A eslint:check --fix",</font> | <font color="#A6E22E">+ "eslint": "deno run eslint:check --fix",</font> |
<font color="#F8F8F2"> "eslint:check": "eslint . --cache --ext .ts,.tsx",</font> | <font color="#F8F8F2"> "eslint:check": "eslint . --cache --ext .ts,.tsx",</font> |
<font color="#F92672">- "install:extension": "jlpm build",</font> | <font color="#F92672">- "install:extension": "jlpm build",</font> |
<font color="#F92672">- "lint:check": "jlpm stylelint:check && jlpm prettier:check && jlpm eslint:check",</font> | <font color="#F92672">- "lint:check": "jlpm stylelint:check && jlpm prettier:check && jlpm eslint:check",</font> |
<font color="#F92672">- "prettier": "jlpm prettier:base --write --list-different",</font> | <font color="#F92672">- "prettier": "jlpm prettier:base --write --list-different",</font> |
<font color="#A6E22E">+ "install:extension": "deno run -A build",</font> | <font color="#A6E22E">+ "install:extension": "deno run build",</font> |
<font color="#A6E22E">+ "lint": "deno run -A stylelint && deno run -A prettier && deno run -A eslint",</font> | <font color="#A6E22E">+ "lint": "deno run stylelint && deno run prettier && deno run eslint",</font> |
<font color="#A6E22E">+ "lint:check": "deno run -A stylelint:check && deno run -A prettier:check && deno run -A eslint:check",</font> | <font color="#A6E22E">+ "lint:check": "deno run stylelint:check && deno run -A prettier:check && deno run eslint:check",</font> |
<font color="#A6E22E">+ "prettier": "deno run -A prettier:base --write --list-different",</font> | <font color="#A6E22E">+ "prettier": "deno run prettier:base --write --list-different",</font> |
<font color="#F8F8F2"> "prettier:base": "prettier \"**/*{.ts,.tsx,.js,.jsx,.css,.json,.md}\"",</font> | <font color="#F8F8F2"> "prettier:base": "prettier \"**/*{.ts,.tsx,.js,.jsx,.css,.json,.md}\"",</font> |
<font color="#F92672">- "prettier:check": "jlpm prettier:base --check",</font> | <font color="#F92672">- "prettier:check": "jlpm prettier:base --check",</font> |
<font color="#F92672">- "stylelint": "jlpm stylelint:check --fix",</font> | <font color="#F92672">- "stylelint": "jlpm stylelint:check --fix",</font> |
<font color="#A6E22E">+ "prettier:check": "deno run -A prettier:base --check",</font> | <font color="#A6E22E">+ "prettier:check": "deno run prettier:base --check",</font> |
<font color="#A6E22E">+ "stylelint": "deno run -A stylelint:check --fix",</font> | <font color="#A6E22E">+ "stylelint": "deno run stylelint:check --fix",</font> |
<font color="#F8F8F2"> "stylelint:check": "stylelint --cache \"style/**/*.css\"",</font> | <font color="#F8F8F2"> "stylelint:check": "stylelint --cache \"style/**/*.css\"",</font> |
<font color="#F8F8F2"> "test": "jest --coverage",</font> | <font color="#F8F8F2"> "test": "jest --coverage",</font> |
| |
===== トラブルシューティング ===== | ===== トラブルシューティング ===== |
| |
| ==== ModuleNotFoundError で --overwrite できない...🤔 ==== |
| <WRAP color_term> |
| <WRAP color_command><html><pre> |
| <font color="#0087FF"><b>$</b></font> <font color="#26A269">jupyter</font><font color="#999999"> labextension develop </font><font color="#A347BA">--overwrite</font><font color="#999999"> </font><font color="#999999"><u style="text-decoration-style:solid">.</u></font> |
| </pre></html></WRAP> |
| <WRAP color_result_hlong><html><pre> |
| /home/tomoyan/miniforge3/envs/jupyterlab/lib/python3.13/site-packages/jupyterlab/debuglog.py:54: UserWarning: An error occurred. |
| warnings.warn("An error occurred.") |
| /home/tomoyan/miniforge3/envs/jupyterlab/lib/python3.13/site-packages/jupyterlab/debuglog.py:55: UserWarning: ModuleNotFoundError: There is no labextension at .. Errors encountered: [TypeError("the 'package' argument is required to perform a relative import for '.'"), ModuleNotFoundError("No module named 'jupyter_theme_editor'"), ModuleNotFoundError("No module named 'jupyter_theme_editor'"), ModuleNotFoundError("No module named 'jupyter_theme_editor'"), ModuleNotFoundError("No module named 'jupyter-config'"), ModuleNotFoundError("No module named 'jupyter_theme_editor'"), ModuleNotFoundError("No module named 'schema'"), ModuleNotFoundError("No module named 'jupyter-config'"), ModuleNotFoundError("No module named 'jupyter-config'"), ModuleNotFoundError("No module named 'jupyter_theme_editor'"), ModuleNotFoundError("No module named 'jupyter_theme_editor'"), ModuleNotFoundError("No module named 'jupyter_theme_editor'"), ModuleNotFoundError("No module named 'jupyter_theme_editor'"), ModuleNotFoundError("No module named 'jupyter_theme_editor'"), ModuleNotFoundError("No module named 'jupyter_theme_editor'"), ModuleNotFoundError("No module named 'node_modules.@hello-pangea'"), ModuleNotFoundError("No module named 'node_modules.@microsoft'"), ModuleNotFoundError("No module named 'node_modules.@rjsf'"), ModuleNotFoundError("No module named 'node_modules.mkdirp'"), ModuleNotFoundError("No module named 'node_modules.npm-run-all'"), ModuleNotFoundError("No module named 'node_modules.react'"), ModuleNotFoundError("No module named 'node_modules.stylelint-config-prettier'"), ModuleNotFoundError("No module named 'node_modules.@hello-pangea'"), ModuleNotFoundError("No module named 'node_modules.@hello-pangea'"), ModuleNotFoundError("No module named 'node_modules.@hello-pangea'"), ModuleNotFoundError("No module named 'node_modules.@hello-pangea'"), ModuleNotFoundError("No module named 'node_modules.@hello-pangea'"), ModuleNotFoundError("No module named 'node_modules.@hello-pangea'"), ModuleNotFoundError(& |