概述

今天我继续完善我做的用来 mock 前端数据的库:ym-mock

我想要实现 2 个需求:

  1. 支持 es6,至少要能 import 吧。
  2. 修改了代码之后能自动热更新,不能我修改了服务器代码要手动重启吧。

最后通过查阅资料,用 babel-nodenodemon 实现了,我把方法记录下来,供以后开发时参考,相信对其他人也有用。

参考资料:

[译]使用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 点需要说明一下:

  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 这个参数。

babel-node 和 nodemon的更多相关文章

  1. 使用babel与@babel/node

    安装 yarn add -D @babel/cli @babel/node 编译entry-server.js yarn babel ./src/ssr/entry-server.js --prese ...

  2. node调试工具--nodemon使用简介

    这个工具和node-supervisor基本上是一致的,但是其功能比较强大,个人觉得在开发环境还是用 nodemon,因为配置比较方便,文档也很清晰.所以这里先主要讲 nodemon. nodemon ...

  3. node调试工具--nodemon

  4. node工具之nodemon

    nodemon nodemon是一种工具,可以自动检测到目录中的文件更改时通过重新启动应用程序来调试基于node.js的应用程序. 安装 npm install -g nodemon //或 npm ...

  5. 新建node工程

    之前各种node工程都是东抄抄,西抄抄的.  用ng的cli之后,发现非常舒服.所以把node新建工程的种种记录一下. node+babel, 直接按es6标准写就好了,  不需要一定写ts再转码了( ...

  6. GraphQL-- 使用Apollo Server搭建Node服务端

    一.关于Apollo Server Apollo Server是一种使用JS创建GraphQL服务端的一个方案.它的兼容性比较好,可以很好地和GraphQL客户端进行兼容.同时它可以 独立作为服务端进 ...

  7. gulp+browserSync+nodemon 实现express 全端自动刷新的实践

    学习过程宝宝心里苦,不能怨政府.. 兴趣所致,一直放不下nodejs的学习,时隔多日,又把express捡起来打算重新再学学,一直没什么太大的长进,和实际的项目经验.真的醉了,太懒了. 今天在重新研究 ...

  8. idea 配置node Run

    1.node 2.nodemon 支持热部署 3.supervisor  支持执部署

  9. [Node.js]expressjs简单测试连接mysql

    下载好node.js和通过npm安装好express.js后,先写package.json { "name": "application-name", &quo ...

随机推荐

  1. 11.css3动画--自定义关键帧动画--@keyframes/animation

    @keyframes设定动画规则,可以理解为动画的剧本. Name.自定义一个动画名称. 0-100%/from...to.... 需要变化的css样式属性. animation所有动画属性的简写.( ...

  2. 通过JNI实现java调用C代码和C代码调用java的代码

    一.java调用C代码 1)java中需要声明调用的函数,也就是native方法,并通过System.LoadLibrary来调用dll或者so(C代码).实例代码如下: public class H ...

  3. python字符串/列表/字典互相转换

    python字符串/列表/字典互相转换 目录 字符串与列表 字符串与字典 列表与字典 字符串与列表 字符串转列表 1.整体转换 str1 = 'hello world' print(str1.spli ...

  4. python redis之连接池的原理

    python redis之连接池的原理 转载地址 什么是连接池 通常情况下, 当我们需要做redis操作时, 会创建一个连接, 并基于这个连接进行redis操作, 操作完成后, 释放连接, 一般情况下 ...

  5. jsp-TagLib标签库

    <%@ page contentType="text/html;charset=UTF-8" language="java" %> <%@ t ...

  6. zabbix监控之同时向多人邮件报警

    安装环境:  zabbix-server zabbix邮件报警配置步骤说明: 安装发送邮件的工具sendEmail 准备一个发送邮件的脚本 修改zabbix配置文件中指定的脚本路径 关联脚本名称 用户 ...

  7. 有准备的面试才能拿到更好的 Offer

    http://www.sohu.com/a/331411917_181657 前几天有读者问我,工作不顺利辞职了.本来以为凭借自己的能力和工作经验可以轻松找到更好的工作,结果投了简历,约面试的很少,面 ...

  8. “12306”是如何支撑百万QPS的?

    来源:掘金 作者:绘你一世倾城 链接:https://juejin.im/post/5d84e21f6fb9a06ac8248149 秒杀系统的艺术 12306抢票,极限并发带来的思考? 每到节假日期 ...

  9. token和sign

    前言 在app开放接口api的设计中,避免不了的就是安全性问题,因为大多数接口涉及到用户的个人信息以及一些敏感的数据,所以对这些接口需要进行身份的认证,那么这就需要用户提供一些信息,比如用户名密码等, ...

  10. Python 元组Ⅰ

    Python 元组 Python的元组与列表类似,不同之处在于元组的元素不能修改. 元组使用小括号,列表使用方括号. 元组创建很简单,只需要在括号中添加元素,并使用逗号隔开即可. 如下实例: 创建空元 ...