我猜你需要一个像vue-cli一样的后端(node)脚手架

前言

相信大家在开发前端的项目时都尝试使用vue-cil之类的脚手架工具来初始化项目,通过这类工具我们可以快速的得到一个包含webpack、babel和基本框架代码的项目模板极大地提升了开发效率也降低了上手的难度。

受到这类框架的启发(主要是Next.js)我尝试创建了一个基于koa2+mongoose的后端脚手架工具 Bus(来不及解释了快上车),主要包含以下功能:

  1. 提供cil命令用于初始化项目,运行、打包项目
  2. 包含webpack、babel环境配置支持自定义
  3. 自动根据接口生成swagger文档
  4. 基础逻辑分装在框架库内,开发者只需关注业务逻辑
  5. 提供通用的接口继承(包括get,post,put,delete等通用接口,避免重复劳动)

食用方法

安装方式:

npm install -g bus-core
bus init
// or
npx bus-core init

初始化项目:

cd yourproject
npm install

修改配置文件 路径:src/config/index.js 参考以下配置:

{
    port: 3000,
    mongodb: {
        url: 'mongodb://test:[email protected]/test'
    }
}

运行 npm run dev 成功后打开 http://localhost:3000/api/swagger-html

我猜你需要一个像vue-cli一样的后端(node)脚手架

ok,项目初始化就完成了(可以看到虽然我们只声明了3个api接口但是却多了好几个,这些其实都是从commonapi继承过来的)

目录结构

  • src
    • apis (接口文件)
    • models (mongoose model拓展)
    • schemas (数据表结构)
    • index.js (入口文件)
  • bus.config.js (webpack配置)
  • .babelrc (babel配置)
  • .eslintrc.js (eslint设置)
  • .editorconfig (编辑器设置)

环境设置

webpack设置

你可以通过在bus.config.js中定义一个webpack方法来拓展webpack的设置

// bus.config.js
module.exports = {
	webpack(config) {
		let loaders = config.module.rules
		loaders.push(	{
			test: /\.html$/,
			loader: 'raw-loader'
		})

		return config
	}
}

babel设置

你可以创建一个在项目根目录创建一个.babelrc文件来拓展babel的设置。注意将bus-core/babel加到presets中

参考以下示例:

{
    "presets" : ["bus-core/babel"],
    "env": {
        "production": {
          "plugins": [
            ["transform-remove-console", { "exclude": [ "error", "warn", "info"] }]
          ]
    }
  }
}

CLI 命令

bus init

生成一个项目 (现在只提供base模板)

我猜你需要一个像vue-cli一样的后端(node)脚手架

bus dev

开发环境运行.

当你修改代码时会自动重载,代码错误会如下显示.

我猜你需要一个像vue-cli一样的后端(node)脚手架

bus build

将以生产模式优化构建以获得最佳性能,构建后的代码将输出在 build 目录下.

你可以通过以下命令运行构建后的代码:

node ./build/main.js

你的应用已经可以发布了!

结语

本文只是对Bus框架的简要说明,如果你想更深入的了解请移步github(点这里)

之后计划会推出关系数据库版(基于sequelize),如果大家觉得还不错的话请顺手star一下~