最近在用vscode 1.23版本的時候發現outDir
不可使用了,建議這麼改吧,直接program
採用編譯後的文件,而後打開sourceMaps
,同時在babel
編譯的時候本身搞--watch
及時生成.map
文件便於vscode
索引;若是你要編譯其餘語言,其實能夠在package.json
當中添加scripts
,經過tasks.json
來在debug以前進行編譯,下面展現出.vscode
下的兩個文件,此爲babel
方法,其餘相似node
.launch.jsongit
"configurations": [ { "type": "node", "request": "launch", "name": "啓動程序", "program": "${workspaceFolder}/lib/login.js", "sourceMaps": true, "preLaunchTask": "build" // 等於下面`label`值 } ]
tasks.jsones6
{ "version": "2.0.0", "command": "npm", "tasks": [ { "label": "build", // 合起來就是`npm run build` "type": "npm", "script": "build" } ] }
package.jsongithub
"scripts": { "build": "babel src --out-dir lib --source-maps" },
實際上這樣較慢,建議單獨在build加watch,而後直接不用preLaunchTask
web
以前一直習慣了用瀏覽器來調試代碼,偶爾想調試一下node包中的代碼,或者本身想寫一個小的node插件無從下手,不知道該怎麼調試,通過查找資料和嚮導師請教實踐了一下這個過程chrome
Visual Studio Code(如下簡稱vscode)是一個很強大的編輯器,相對而言比較輕量,由於我一般喜歡webstorm,webstorm自動保存和錯誤提示的特性深受我喜好,可是對於調試nodejs來講,vscode則更具備它的優點所在。vscode支持windows,OS X和Linux三種環境,而且能夠安裝擴展插件,於是能夠知足絕大多數人的要求,安裝配置非本文所要講述的內容,請自行查找,本文着重討論如何用vscode更好的調試node代碼,但願能對你們有所幫助。npm
左上角依次是項目目錄,搜索,版本管理git相關(左下角爲當前分支),調試,其餘擴展插件 ,其餘的均爲中文標註,不解釋,都是我們必要的,這幾個若是沒有的建議調出來這都是調試很必要的幾個東西,能夠去到菜單欄的查看中逐一調出json
點擊圖中左數第四個按鈕,也就是調試,而後點擊圖中紅框便可打開launch.jsonsegmentfault
"configurations": [ { "type": "node", "request": "launch", "name": "Launch Program", "program": "${workspaceFolder}/src/extract-cli.js", "args": ["--output", "output.pot", "${workspaceFolder}/test/product_group.vm"], "outDir": "${workspaceFolder}/dist", "sourceMaps": true } ]
type
和request
不用改,默認就能夠,request
爲launch
時用F5
直接能夠啓動調試,request
爲attach按照官網解釋是關聯到已經運行的一個程序,可是此處能夠無論,咱們就用vscode自帶的調試器進行調試就好。windows
program
這個參數是指定要運行的js入口文件,其中${workspaceFolder}
爲當前打開的項目目錄,.vscode
目錄會自動生成在此目錄下,launch.json
也在此目錄下
args
也是個比較重要的,好比該例,我執行命令gettext-extract --output output.pot input.vm
那麼args的做用其實就是傳入命令後面的參數,每一個空格之間要分開,寫成args
的某個子元素
sourceMaps
對於編寫es5代碼來講這個參數沒有什麼卵用,可是對於寫es6
,TypeScript
等就十分有必要了,這個參數的值爲true
時會利用編譯過程生成的map來進行源碼和編譯後的代碼進行對應,這樣在源碼打斷點,就能夠愉快的進行咱們的調試了
outDir
是用來標註編譯後代碼的生成目錄的,幫助vscode進行查找
下面討論下關於編譯先後的對應關係這件事
program
參數若是直接指向編譯後的文件,vscode
奇蹟般的能夠本身去尋找到源碼文件,這對於咱們的調試是最簡單的方式了 program
指向你編寫的文件,那麼須要提供一個outDir
參數,只要配置到編譯生成目錄就行了。sourceMaps
還有編譯成成.js.map
若是你調試遇到了問題請嘗試將sourceMaps
設置爲true
並讓編譯工具生成map
文件只要在你調試的代碼左邊點擊一下,只要是紅色的,說明此處斷點可行,如圖所示
直接按F5
便可開始調試,會在界面上出現相似於chrome的那幾個單步跳過,單步調試等等,使用方法相似chrome
,只是快捷鍵稍有不一樣
而後點擊左側上面介紹的調試按鈕,會看到運行到某一步的變量,還有調用堆棧狀況,如圖所示
捎帶介紹一下本文使用的babel
和命令行入口相關的知識
package.json
,會發現有一個bin
的配置,這麼配置再npm install
的時候就會將這兩個命令加入到node_modules/.bin
當中,而後就能夠用作命令行了"bin": { "gettext-compile": "./dist/compile-cli.js", "gettext-extract": "./dist/extract-cli.js" }
babel
執行命令時能夠加--source-maps true
來生成map文件,若是遇到我上面說到問題的纔會用到這個,估計其餘的編譯工具也會有;另外,咱們修改源文件以後,想當即重啓調試來進行驗證,每次都本身執行命令很麻煩,那麼babel
自身支持--watch
參數,能夠監控文件變化,這樣咱們就能夠實現簡單的自動化babel
或者其餘的命令行命令寫的很長,不容易記住,那麼咱們就能夠將其寫在package.json
當中,以下就是講babel
編譯寫在其中,能夠執行npm run prepublish
便可"scripts": { "prepublish": "babel --watch --presets es2015 --plugins transform-object-assign --source-maps true src --out-dir dist/" }
參考資料:
babel --help
的幫助