UNPKG

4.77 kBMarkdownView Raw
1## 说明
2
3部署应用工具,部署Web项目到服务器
4
5## 功能特性
6
7- ✔︎ 支持本地或远程项目,远程项目需设置仓库地址
8- ✔︎ 支持前端或Node项目,Node项目部署后运行
9- ✔︎ 支持上传静态资源到OSS服务器
10- ✔︎ 支持设置默认的配置,一次配置多次使用,配置可扩展
11
12[English Document](https://github.com/weihomechen/deploy-tool/blob/master/README-en.md)
13
14## 安装
15
16```sh
17npm i @ifun/deploy -g
18```
19
20## @2.x
21
22- 重构了大部分代码,模块之间的功能划分更加明确,减少耦合,
23 - `bin`作为工具的命令行入口,只负责识别命令、整合参数给具体的执行者
24 - `lib`聚焦于单一功能点,完成具体的功能
25 - `config`存储配置
26 - `sh`放置执行脚本
27- 变更配置的使用方式,工具不再维护具体项目的配置,由具体项目自己维护
28- 通过命令行只能配置全局参数,不再提供通过命令行配置项目的参数
29
30## 使用
31
32### 部署项目
33
34通过在项目根目录下新建一个名为`deploy.config.js`的文件,导出项目自己的配置:
35
36```js
37// deploy.config.js
38module.exports = {
39 // key即为部署方案名,一个项目可以有多个部署方案,比如部署在多个服务器,或者多个部署模式
40 dev: {
41 web: '192.168.90.78',
42 },
43 prod: {
44 web: '118.25.16.129',
45 }
46}
47```
48
49使用时,在项目根目录下运行:
50
51```sh
52deploy app <scheme>
53
54# 示例
55deploy app dev
56```
57
58### 获取和设置全局参数
59
60```sh
61# 获取全局配置项web
62deploy config get web
63
64# 设置全局配置项web为88.88.88.88
65deploy config set web 88.88.88.88
66
67```
68
69### 单纯上传到oss
70
71支持从本地或仓库上传静态资源到OSS,如果是本地项目,则直接上传到oss服务器指定目录。如果是远程仓库,会先`git clone`到本地,如果需要打包,则执行传入的打包命令,然后再上传。
72
73```sh
74# e.g.
75deploy oss <scheme> -i <accessKeyId> -s <accessKeySecret>
76```
77
78### 帮助
79``` sh
80# for help
81deploy -h
82
83# for more detail
84deploy <command> -h
85
86# e.g
87deploy app -h
88
89```
90
91## 参数说明
92
93默认的全局配置:
94
95```js
96{
97 "web": "118.25.16.129", // 服务器ip地址
98 "dir": "/var/proj/", // 服务器部署目录
99 "user": "root", // 用于ssh登录的用户名
100 "type": "0", // 项目类型,0-static,1-node
101 "isNeedBuild": true, // 是否执行打包构建
102 "buildScript": "build", // 构建命令
103 "distDir": "dist", // 构建后静态资源目录
104 "npmRegistry": "http://registry.npmjs.org/" // npm镜像源
105}
106```
107
108可通过命令行传入的参数:
109
110```sh
111 .command('app <name>')
112 .option('-w, --web [web]', 'web服务器')
113 .option('-u, --user [user]', 'web服务器用户名')
114 .option('-d, --dir [dir]', '要部署到web服务器的目录')
115
116.command('config <action>')
117 .option('-a, --all', '是否读取全部配置')
118
119 .command('oss <name>')
120 .option('-i, --accessKeyId <accessKeyId>', 'oss accessKeyId')
121 .option('-s, --accessKeySecret <accessKeySecret>', 'oss accessKeySecret')
122 .option('-p [publicDir]', '项目内要部署到OSS的文件目录')
123 .option('-b [bucket]', 'oss bucket')
124 .option('-r [region]', 'oss region')
125 .option('-a [assets]', 'oss 静态资源目录')
126```
127
128## 自定义默认配置
129
130### 通过命令行可以设置全局配置
131
132```sh
133deploy config set [key] [value]
134# e.g.
135deploy config set user yourname
136```
137
138### 项目内的配置文件
139
140在项目的根目录下,通过`deploy.config.js`文件,维护项目自己的配置:
141
142```js
143// deploy.config.js
144module.exports = {
145 // key即为部署方案名,一个项目可以有多个部署方案,比如部署在多个服务器,或者多个部署模式
146 dev: {
147 web: '192.168.90.78',
148 newkey: 'new value',
149 },
150 prod: {
151 web: '118.25.16.129',
152 }
153}
154```
155
156### 临时修改
157
158临时输入的参数具有最高权级,会覆盖全局和项目的默认配置,仅生效一次
159
160```sh
161# 通过命令行传递的`web`的参数最终会被使用
162deploy app [scheme] -w 88.88.88.88
163```
164
165
166## 约定
167
168以下约定是本项目的默认设置
169
170### 前端
171- 项目生产环境打包命令 `build`
172- 打包后的文件夹名 `dist`
173
174### 服务端
175- 服务启动命令 `npm run prod`
176- 服务停止命令 `npm run stop`
177
178## 实践
179
180以下项目均通过本工具实现部署,线上预览地址在项目的github page:
181
182- [blog](https://github.com/weihomechen/blog)
183- [blog-node](https://github.com/weihomechen/blog-node)
184- [react-admin](https://github.com/weihomechen/react-admin)
185- [react-admin-node](https://github.com/weihomechen/react-admin-node)
186- [vue-mail](https://github.com/weihomechen/vue-mail-front)
187- [vue-blog](https://github.com/weihomechen/vue-blog)
188- [ssr-starter](https://github.com/weihomechen/ssr-starter)