概述
今天我繼續完善我做的用來 mock 前端數據的庫:ym-mock。
我想要實現 2 個需求:
- 支持 es6,至少要能 import 吧。
- 修改了代碼之后能自動熱更新,不能我修改了服務器代碼要手動重啟吧。
最后通過查閱資料,用 babel-node 和 nodemon 實現了,我把方法記錄下來,供以后開發時參考,相信對其他人也有用。
參考資料:
[譯]使用Babel7+nodemon打造你的Node.js項目開發
babel-node
使用 babel-node 可以在 node 端自行編譯並運行 es6 甚至 es7。安裝方法如下:
npm i @babel/core @babel/cli @babel/preset-env @babel/node -D // 或者使用 yarn
注意:我這里是局部安裝的,全局安裝的方法請自行看官方文檔。
然后我們需要在項目的根目錄下面創建 .babelrc 文件:
// .babelrc
{
"presets": ["@babel/preset-env"]
}
最后修改 package.json,使用 babel-node 啟動服務器入口文件即可:
// 使用命令 npm run server 即可運行
"scripts": {
"server": "babel-node server.js"
},
這里有 2 點需要說明一下:
- 為什么要用 babel-node 而不用 @babel/register 或者 @babel/polyfill 庫?因為后者只能用於打包過程。也就是說,需要先編譯,然后才能運行。
- 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 這個參數。
