VSCodeでDjango
の開発を行う場合、拡張機能のPython
を入れておくと、Django
用のデバッグが自動的に作成されます。
これがあると、キー一つでサーバーが起動できるため、とても助かります。
ただ、以下の点が若干不満です。
TypeScript
等、別途コンパイル等が必要なものがある場合に、別作業が入って面倒JavaScript
のデバッグはブラウザでやることになってしまう- サーバーにアクセスするには、ブラウザ等でURLを入力する必要があって面倒
というわけで、これらの不満を解消するために、
の二つの設定を行って、デバッグを楽にしましょう。
バージョンや環境
たくさん使います。
ツール等 | バージョン |
---|---|
OS | Windows 10 Pro 64bit 1803 |
Visual Studio Code | 1.28.2 |
Python | 3.7.0 |
Django | 2.1.1 |
TypeScript | 3.1.3 |
bootstrap | 4.1.3 |
TypeScript
インストールのために、node.js
とnpm
が入っていますが、今回は関係ないので省略しています。
拡張機能 | バージョン |
---|---|
Python | 2018.9.1 |
Debugger for Chrome | 4.10.2 |
その他、Django
開発補助の拡張機能がいくつか入っていますが、今回は無関係なので省略しています。
TypeScriptのビルド
これに関しては、前回の記事に書きましたので、下記を参照ください。
ブラウザのデバッグをVSCodeで行う
拡張機能インストール
これは、拡張機能Debugger for Chrome
で行います。
まず、拡張機能をインストールします。その後launch.json
を開きまして、Ctrl + Space
で入力補完を呼び出すと、Chrome: Launch
という項目が出るので、選択します。
デフォルトだと、URL
が
"url": "http://localhost:8080",
となっているので、ポートはデバッグ環境に合わせて直します。Django
のデフォルトは8000
です。
サイトが起動するか確かめる
手段は問わないので、Django
のサーバーを起動します。サイトのルートフォルダで
python manage.py runserver
とし、サーバーを起動します。
その状態で、VSCode
上のデバッグでLaunch Chrome
を選択します。
すると、Chrome
が開いて、Django
で作っているサイトが起動するはずです。
ただし、この状態ではTypeScript
のデバッグはできません。
マッピングの追加
今回のサンプルプロジェクトでは、TypeScript
やJavaScript
をstatic
フォルダに入れています。
そして、static
要素へアクセスするURLは
sampleapp/static/app_src/…
のようになっています。
現在のデバッグ構成では、このパスを解決できないので、先ほど作ったChrome: launch
にpathMapping
という項目を追加します。
{ "type": "chrome", "request": "launch", "name": "Launch Chrome", "url": "http://localhost:8090", "webRoot": "${workspaceFolder}", "pathMapping": { "/static": "${workspaceFolder}/sampleapp/static" } },
これで、/static
というURL
と、物理フォルダをマッピングして、デバッグ時に解決してくれます。
ts.config
で、map
等を作る設定にしていれば、TypeScript
のデバッグがVSCode
上で可能なはずです。試してみましょう。
できています。今回のスクリプトはテスト用なので、無意味な内容になっています。
デバッグを同時起動する
上の設定をすると、
の二つが共存している状態になります。
同時にデバッグはできない、と思いきや、画面左のデバッグから、Python: Django
選択して「デバッグの開始」、次にLaunch Chrome
を選択して「デバッグの開始」を行うと、
なんと、同時にデバッグできます。
個人的には、Visual Studio
の印象が強く、無理だと思っていましたが、デバッグは同時起動できます。
そして、複数のデバッグを同時起動できる設定も可能です。
設定
launch.json
を開きまして、configurations
の配列終了部分でカンマ、続いてCtrl + Space
で入力補完すると、compounds
が出てくるので、選択します。
name
は分かりやすいもの(今回はexecute site
)に変更し、同時起動したいデバッグ構成の名前をconfigurations
に入れます。ここでも入力補完が行えます。
こうすると、デバッグの選択肢にexecute site
が追加されるので、それを選択してデバッグを開始すると、Django
とサイトが同時起動されます。
これで、Python
とTypeScript
のデバッグが、VSCode
上で行えるようになりました。さらに、デバッグ開始だけでサイトが起動します。とっても楽です。
今回記載した複数デバッグの内容は、公式の英語のページに記載があります。
おわりに
Django
の開発が、なんとか楽にならないものかと試行錯誤していましたが、まさかこんなに楽できる方法があるとは思っていませんでした。
Visual Studio Code
で、そもそも複数のデバッグが同時起動できるなんて知りませんでしたし、同時起動設定もあるのは本当にすごいです。
サーバーとクライアントのデバッガが同時起動ができるエディタって、もはやエディタなんでしょうか…しかしよく考えられています。
言語の組み合わせに依存しない仕組みになっているので、この機能を利用して、もっと便利な使い方ができるかもしれません。