原文地址:Using babel7 with node(https://hackernoon.com/using-babel-7-with-node-7e401bc28b04)
原文做者:Will Willems
譯者:Bangood複製代碼
想在你的Node.js項目中使用最新的js語法嗎?想讓你的項目具有熱更新能力嗎?本文的目標就是讓你可以搭建起這樣的一個基本項目。node
你們以前可能用過babel的其餘低版本,可是今天咱們使用的babel7和其餘低版本有一些不一樣之處。git
1.Babel7的相關包都掛在了@babel域下。好比以前的babel-cli
包如今改名爲@babel/cli
。npm
2.@babel/preset-env
囊括了之前全部以年份命名的presets的功能。json
3.babel-node
從CLI中提取出來成了一個獨立的包:@babel/node
。windows
想了解更多的關於babel7的變化的,能夠到官網查看。bash
咱們先打開咱們的命令行終端工具:windows下,win+R
,輸入cmd
,回車,進入命令行工具。babel
建立咱們的項目文件夾:mkdir my-project
。工具
切換到項目文件夾:cd my-project
。ui
咱們用Git管理咱們的項目,因此,咱們執行一下:git init
命令。spa
執行npm init初始化咱們的項目,會自動生成一個package.json文件。
咱們再在當前目錄下建立兩個文件夾:dist和src。這是咱們的項目結構以下:
my-project
|--dist
|--src
|--package.json
複製代碼
讓咱們如今src目錄下建立一個咱們整個項目的入口文件server.js
my-project
|--dist
|--src
| |--server.js
|--package.json複製代碼
要在咱們的項目中使用babel7,咱們執行npm install --save-dev @babel/core @babel/cli @babel/preset-env @babel/node.
爲了告訴babel如何使用@babel/preset-env
包,咱們須要在咱們項目的根目錄下建立文件:.babelrc
。
// .babelrc
{
"presets": ["@babel/preset-env"]
}複製代碼
在編寫調試Node.js項目,修改代碼後,須要頻繁的手動close掉,而後再從新啓動,很是繁瑣。如今,咱們能夠經過npm install --save-dev nodemon,
在咱們的項目中引入nodemon
這個工具,它的做用是監聽代碼文件的變更,當代碼改變以後,自動重啓。
到目前爲止,咱們的項目結構以下:
my-project
|--dist
|--node_modules
|--src
| |--server.js
|--package.json
|--.babelrc
複製代碼
在最後,咱們添加一些npm
命令到咱們的package.json
文件。
start
命令 :nodemon --exec babel-node src/server.js
。這個命令是告訴nodemon
去監聽文件的變化,一旦檢測到有文件發生了變化,就會重啓並用babel-node去運行src/server.js
文件。這個命令通常用於本地開發。build
命令:babel src --out-dir dist
。這個命令是告訴babel去編譯src
裏的源文件,並將獲得的結果輸出到dist
中serve
命令:node dist/server.js
。這個命令是讓咱們用node運行咱們編譯好的文件。可能有人會問,爲何咱們不直接用nodemon去運行咱們的程序呢?這是由於相較於node,使用nodemon運行咱們的程序會使用更多的內存,花費更多的啓動時間。package.json
裏的內容就和下面的相似了:
{
"name": "my-project",
"version": "1.0.0",
"description": "",
"main": "src/server.js",
"scripts": {
"start": "nodemon --exec babel-node src/server.js",
"build": "babel src --out-dir dist",
"serve": "node dist/server.js"
},
"author": "",
"license": "MIT",
"dependencies": { },
"devDependencies": {
"@babel/cli": "7.4.3",
"@babel/core": "7.4.3",
"@babel/node": "7.2.2",
"@babel/preset-env": "7.4.3",
"nodemon": "1.18.11"
}}複製代碼