beego 的 bee 工具命令行详细解析

1. 创建项目命令(new):

bee new project_name (project_name 为你自己定义的项目名字)

以下是此命令的使用效果,我们使用 bee 来创建一个后台权限项目

guoshijiangdeMacBook-Pro:GoWorkspace guoshijiang$ bee new beego_admin
2020/08/23 13:55:03 INFO     ▶ 0001 generate new project support go modules.
2020/08/23 13:55:03 INFO     ▶ 0002 Creating application...
	create	 /Users/guoshijiang/GoWorkspace/beego_admin/go.mod
	create	 /Users/guoshijiang/GoWorkspace/beego_admin/
	create	 /Users/guoshijiang/GoWorkspace/beego_admin/conf/
	create	 /Users/guoshijiang/GoWorkspace/beego_admin/controllers/
	create	 /Users/guoshijiang/GoWorkspace/beego_admin/models/
	create	 /Users/guoshijiang/GoWorkspace/beego_admin/routers/
	create	 /Users/guoshijiang/GoWorkspace/beego_admin/tests/
	create	 /Users/guoshijiang/GoWorkspace/beego_admin/static/
	create	 /Users/guoshijiang/GoWorkspace/beego_admin/static/js/
	create	 /Users/guoshijiang/GoWorkspace/beego_admin/static/css/
	create	 /Users/guoshijiang/GoWorkspace/beego_admin/static/img/
	create	 /Users/guoshijiang/GoWorkspace/beego_admin/views/
	create	 /Users/guoshijiang/GoWorkspace/beego_admin/conf/app.conf
	create	 /Users/guoshijiang/GoWorkspace/beego_admin/controllers/default.go
	create	 /Users/guoshijiang/GoWorkspace/beego_admin/views/index.tpl
	create	 /Users/guoshijiang/GoWorkspace/beego_admin/routers/router.go
	create	 /Users/guoshijiang/GoWorkspace/beego_admin/tests/default_test.go
	create	 /Users/guoshijiang/GoWorkspace/beego_admin/main.go
2020/08/23 13:55:03 SUCCESS  ▶ 0003 New application successfully created!

bee new 项目命令会产生这些文件,创建的项目为 MVC 模式, controller 下面是控制器层的代码,Model 下面是数据库操作的代码,views 下面为视图文件。后面的文章中我们将会使用 beego 和 layui 为大家做后台权限管理加网站的项目。


2. 创建 API 项目命令(api)

bee api project_name  project_name 为你自定义的项目的名字

上面的 new 命令是用来新建 Web 项目,不过很多用户使用 beego 来开发 API 应用。所以这个 api 命令就是用来创建 API 应用的,执行命令之后如下所示:

guoshijiangdeMacBook-Pro:GoWorkspace guoshijiang$ bee api test
______
| ___ \
| |_/ /  ___   ___
| ___ \ / _ \ / _ \
| |_/ /|  __/|  __/
\____/  \___| \___| v1.11.0
2020/08/23 14:03:13 INFO     ▶ 0001 generate api project support GOPATH
______
| ___ \
| |_/ /  ___   ___
| ___ \ / _ \ / _ \
| |_/ /|  __/|  __/
\____/  \___| \___| v1.11.0
2020/08/23 14:03:13 WARN     ▶ 0002 You current workdir is not inside $GOPATH/src.
2020/08/23 14:03:13 INFO     ▶ 0003 Creating API...
	create	 /Users/guoshijiang/go_project/src/test
	create	 /Users/guoshijiang/go_project/src/test/conf
	create	 /Users/guoshijiang/go_project/src/test/controllers
	create	 /Users/guoshijiang/go_project/src/test/tests
	create	 /Users/guoshijiang/go_project/src/test/conf/app.conf
	create	 /Users/guoshijiang/go_project/src/test/models
	create	 /Users/guoshijiang/go_project/src/test/routers/
	create	 /Users/guoshijiang/go_project/src/test/controllers/object.go
	create	 /Users/guoshijiang/go_project/src/test/controllers/user.go
	create	 /Users/guoshijiang/go_project/src/test/tests/default_test.go
	create	 /Users/guoshijiang/go_project/src/test/routers/router.go
	create	 /Users/guoshijiang/go_project/src/test/models/object.go
	create	 /Users/guoshijiang/go_project/src/test/models/user.go
	create	 /Users/guoshijiang/go_project/src/test/main.go
2020/08/23 14:03:13 SUCCESS  ▶ 0004 New API successfully created!


api 创建的项目比 new 创建的项目少了视图层,原因是 api 项目不需要使用 beego 的模版去实现界面的开发,只需提供api 给前端的朋友用就行了。 


上面还有一个问题, api 创建的项目支持 gopath, 如果你本地配置了 gopath , 那么不管你在那个目录下执行 bee api  project , 这个项目的会创建在gopath 下面。


3. 运行项目命令

bee run project_name project_name 为你自定义的项目的名字

执行命令效果如下:

guoshijiangdeMacBook-Pro:GoWorkspace guoshijiang$ cd beego_admin/
guoshijiangdeMacBook-Pro:beego_admin guoshijiang$
guoshijiangdeMacBook-Pro:beego_admin guoshijiang$ bee run
______
| ___ \
| |_/ /  ___   ___
| ___ \ / _ \ / _ \
| |_/ /|  __/|  __/
\____/  \___| \___| v1.11.0
2020/08/23 14:07:50 WARN     ▶ 0001 Running application outside of GOPATH
2020/08/23 14:07:50 INFO     ▶ 0002 Using 'beego_admin' as 'appname'
2020/08/23 14:07:50 INFO     ▶ 0003 Initializing watcher...
go: finding module for package github.com/shiena/ansicolor
go: found github.com/shiena/ansicolor in github.com/shiena/ansicolor v0.0.0-20151119151921-a422bbe96644
beego_admin/controllers
beego_admin/routers
beego_admin
2020/08/23 14:07:55 SUCCESS  ▶ 0004 Built Successfully!
2020/08/23 14:07:55 INFO     ▶ 0005 Restarting 'beego_admin'...
2020/08/23 14:07:55 SUCCESS  ▶ 0006 './beego_admin' is running...
2020/08/23 14:07:55.324 [I] [asm_amd64.s:1373]  http server Running on http://:8080
2020/08/23 14:07:55.324 [C] [asm_amd64.s:1373]  ListenAndServe:  listen tcp :8080: bind: address already in use

先 cd 到我们创建的项目目录下面,然后执行 bee run 命令,就可以运行项目,当然,bee run 命令也可以带参数执行,关于 bee run 带参数执行,在后面的项目中我们会讲解到。


4. 打包命令 pack 命令

pack 目录用来发布应用的时候打包,会把项目打包成 zip 包,这样我们部署的时候直接把打包之后的项目上传,解压就可以部署了:

bee pack
app path: /gopath/src/apiproject
GOOS darwin GOARCH amd64
build apiproject
build success
exclude prefix:
exclude suffix: .go:.DS_Store:.tmp
file write to `/gopath/src/apiproject/apiproject.tar.gz`

我们可以看到目录下有如下的压缩文件:

rwxr-xr-x  1 astaxie  staff  8995376 11 25 22:46 apiproject
-rw-r--r--  1 astaxie  staff  2240288 11 25 22:58 apiproject.tar.gz
drwxr-xr-x  3 astaxie  staff      102 11 25 22:31 conf
drwxr-xr-x  3 astaxie  staff      102 11 25 22:31 controllers
-rw-r--r--  1 astaxie  staff      509 11 25 22:31 main.go
drwxr-xr-x  3 astaxie  staff      102 11 25 22:31 models
drwxr-xr-x  3 astaxie  staff      102 11 25 22:31 tests


5. bale 命令

这个命令目前仅限内部使用,具体实现方案未完善,主要用来压缩所有的静态文件变成一个变量申明文件,全部编译到二进制文件里面,用户发布的时候携带静态文件,包括 js、css、img 和 views。最后在启动运行时进行非覆盖式的自解压。


6. version 命令

这个命令是动态获取 bee、beego 和 Go 的版本,这样一旦用户出现错误,可以通过该命令来查看当前的版本

$ bee version
bee   :1.2.2
beego :1.4.2
Go    :go version go1.3.3 darwin/amd64


7. generate 命令

这个命令是用来自动化的生成代码的,包含了从数据库一键生成 model,还包含了 scaffold 的,通过这个命令,让大家开发代码不再慢

bee generate scaffold [scaffoldname] [-fields=""] [-driver=mysql] [-conn="root:@tcp(127.0.0.1:3306)/test"]
    The generate scaffold command will do a number of things for you.
    -fields: a list of table fields. Format: field:type, ...
    -driver: [mysql | postgres | sqlite], the default is mysql
    -conn:   the connection string used by the driver, the default is root:@tcp(127.0.0.1:3306)/test
    example: bee generate scaffold post -fields="title:string,body:text"

bee generate model [modelname] [-fields=""]
    generate RESTful model based on fields
    -fields: a list of table fields. Format: field:type, ...

bee generate controller [controllerfile]
    generate RESTful controllers

bee generate view [viewpath]
    generate CRUD view in viewpath

bee generate migration [migrationfile] [-fields=""]
    generate migration file for making database schema update
    -fields: a list of table fields. Format: field:type, ...

bee generate docs
    generate swagger doc file

bee generate test [routerfile]
    generate testcase

bee generate appcode [-tables=""] [-driver=mysql] [-conn="root:@tcp(127.0.0.1:3306)/test"] [-level=3]
    generate appcode based on an existing database
    -tables: a list of table names separated by ',', default is empty, indicating all tables
    -driver: [mysql | postgres | sqlite], the default is mysql
    -conn:   the connection string used by the driver.
             default for mysql:    root:@tcp(127.0.0.1:3306)/test
             default for postgres: postgres://postgres:postgres@127.0.0.1:5432/postgres
    -level:  [1 | 2 | 3], 1 = models; 2 = models,controllers; 3 = models,controllers,router


8. migrate 命令

这个命令是应用的数据库迁移命令,主要是用来每次应用升级,降级的SQL管理。

bee migrate [-driver=mysql] [-conn="root:@tcp(127.0.0.1:3306)/test"]
    run all outstanding migrations
    -driver: [mysql | postgresql | sqlite], the default is mysql
    -conn:   the connection string used by the driver, the default is root:@tcp(127.0.0.1:3306)/test

bee migrate rollback [-driver=mysql] [-conn="root:@tcp(127.0.0.1:3306)/test"]
    rollback the last migration operation
    -driver: [mysql | postgresql | sqlite], the default is mysql
    -conn:   the connection string used by the driver, the default is root:@tcp(127.0.0.1:3306)/test

bee migrate reset [-driver=mysql] [-conn="root:@tcp(127.0.0.1:3306)/test"]
    rollback all migrations
    -driver: [mysql | postgresql | sqlite], the default is mysql
    -conn:   the connection string used by the driver, the default is root:@tcp(127.0.0.1:3306)/test

bee migrate refresh [-driver=mysql] [-conn="root:@tcp(127.0.0.1:3306)/test"]
    rollback all migrations and run them all again
    -driver: [mysql | postgresql | sqlite], the default is mysql
    -conn:   the connection string used by the driver, the default is root:@tcp(127.0.0.1:3306)/test


9.dockerize 命令

这个命令可以通过生成Dockerfile文件来实现docker化你的应用。

例子: 生成一个以1.6.4版本Go环境为基础镜像的Dockerfile,并暴露9000端口:

$ bee dockerize -image="library/golang:1.6.4" -expose=9000
______
| ___ \
| |_/ /  ___   ___
| ___ \ / _ \ / _ \
| |_/ /|  __/|  __/
\____/  \___| \___| v1.6.2
2016/12/26 22:34:54 INFO     ▶ 0001 Generating Dockerfile...
2016/12/26 22:34:54 SUCCESS  ▶ 0002 Dockerfile generated.

0
376