babel-node 和 nodemon

概述

今天我繼續完善我作的用來 mock 前端數據的庫:ym-mock前端

我想要實現 2 個需求:node

  1. 支持 es6,至少要能 import 吧。
  2. 修改了代碼以後能自動熱更新,不能我修改了服務器代碼要手動重啓吧。

最後經過查閱資料,用 babel-nodenodemon 實現了,我把方法記錄下來,供之後開發時參考,相信對其餘人也有用。python

參考資料:git

[譯]使用Babel7+nodemon打造你的Node.js項目開發es6

babel-node

使用 babel-node 能夠在 node 端自行編譯並運行 es6 甚至 es7。安裝方法以下:github

npm i @babel/core @babel/cli @babel/preset-env @babel/node -D // 或者使用 yarn

注意:我這裏是局部安裝的,全局安裝的方法請自行看官方文檔。npm

而後咱們須要在項目的根目錄下面建立 .babelrc 文件:json

// .babelrc
{
  "presets": ["@babel/preset-env"]
}

最後修改 package.json,使用 babel-node 啓動服務器入口文件便可:服務器

// 使用命令 npm run server 便可運行
"scripts": {
  "server": "babel-node server.js"
},

這裏有 2 點須要說明一下:babel

  1. 爲何要用 babel-node 而不用 @babel/register 或者 @babel/polyfill 庫?由於後者只能用於打包過程。也就是說,須要先編譯,而後才能運行。
  2. babel-node 只是用於非打包過程的,若是須要打包的話(好比用於生產環境),則不建議使用 babel-node,由於 babel-node 的打包體積會很是大。

nodemon

使用 nodemon 能夠監聽文件修改,而後讓服務器自行重啓

首先咱們安裝 nodemon:

npm i nodemon -D // 或者使用 yarn

最後修改一下 package.json 的命令便可:

// 使用命令 npm run server 便可運行
"scripts": {
  "server": "nodemon --exec babel-node server.js"
},

說明一下爲何要加 --exec 這個參數:這個參數是讓 nodemon 運行非 node 程序的,好比運行 py 文件nodemon --exec "python -v" ./app.py。在這裏由於咱們是用 nodemon 運行 babel-node,而不是 server.js,因此須要加 --exec 這個參數。

相關文章
相關標籤/搜索