vscode 搭建nodemon+ts+ts-node 的開發環境

我司由于業務調整需要重新對現有的web portal 進行開發.現有的portal 存在10年并且承載了大量業務,里面有jq,knockout和angularjs 還有react 15和16 簡直就是一個前端發展史有沒有.
那么這么復雜的業務邏輯的dashboard開發必然要ts
如何初始化一個npm項目和這里不再細說
在server 下
安裝依賴包

$ npm install --save-dev ts-node nodemon typescript 

在之前nodejs 不支持es6語法的時候,有一個東西叫babel-node, 就是如果熟悉的人一定知道,就是用來代替node 命令來運行由es6語法編寫而成的nodejs 服務.
基本用法

$ ts-node app.ts

tsconfig.json如下

{
  "compilerOptions": {
    "target": "es2016",                     
    "module": "commonjs",                    
    "lib": ["es2016", "esnext.asynciterable"],                    
    "outDir": "dist",                        
    "rootDir": "src",                        
    "strict": true,                          
    "esModuleInterop": true,             
  }
}

大型項目,需要 多人開發的情況下,規約很重要,那么prettier和eslint 就必須要有..
eslint 配合 prettier 的配置如下 具體的可以在官網去看看相應的配置

.prettierrc.js

module.exports = {
  semi: true,
  trailingComma: "none",
  singleQuote: true,
  printWidth: 80,
  tabWidth: 2
}

接著到.eslintrc.js

  parser: '@typescript-eslint/parser',
  extends: [
    'plugin:@typescript-eslint/recommended',
    'prettier/@typescript-eslint',
    'plugin:prettier/recommended',
  ],
  parserOptions: {
    ecmaVersion: 2016,
    sourceType: 'module',
  },
  rules: {
    // Place to specify ESLint rules. Can be used to overwrite rules specified from the extended configs
    "@typescript-eslint/explicit-function-return-type": "off",
    "@typescript-eslint/interface-name-prefix": "off"
  },
};

其實到這里,基本上
在package.json 的script里添加兩條命令就可以進行開發了

"dev": "nodemon --ext js,ts --exec 'npm run lint:dev && ts-node src/main.ts'",
"lint:dev": "eslint './src/**/*.ts'"

ts-node每次不會產生編譯后的js文件,而是把它們丟到內存里, 隨著結束進程就銷毀
因此,eslint 可能不會起作用對你的代碼進行約束,因此你需要手動啟動 eslint 然后通過了再 開始執行ts-node.因為 nodemon exec參數傳進去的字符串可能有點問題,因此,你直接把eslint傳進去不工作,所以寫成一個命令即可.

那么大型的項目,需要調試,那你要設置斷點. vscode設置斷點這個玩意真是比較麻煩
打開項目,在左邊那個dubug標簽,你點擊它然后會生成一個

通過vscode 的launch.json 去執行npm腳本
首先在 package .json中的scripts里加入以下代碼

"debug":"nodemon  --ext js,ts   --exec node -r ts-node/register --inspect src/main.ts",

解釋一下就是使用nodemon 然后進入調試模式(打好斷點后) 接著執行debug模式
ts-node 本身不支持--inspect這個命令的,所以你需要用用原生的node然后引入ts-node 來編譯ts -r就是--require的縮寫然后開始
launch.json如下

{
    "version": "0.2.0",
    "configurations": [
        {
            "type": "node2",
            "request": "launch",
            "name": "Launch Program",
            "runtimeExecutable": "npm",
            "runtimeArgs": [
                "run",
                "debug"
            ],
            "cwd": "${workspaceRoot}/server",
            "port": 9229,
           "console":"intergratedTerminal",
            "sourceMaps": true
        }
    ]
}

這樣就萬事大吉了,然后你可以直接啟動,debug會自動監聽9229 這個端口,因為你--inspect后,debugger就會掛載在你的應用程序里,通過websocket來通信.
然后你就可以愉快地進一步搭建基礎設施啦.

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容