原文地址: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"
}}复制代码