1 | <h1 align="center"><img src="/doc/assets/images/gupack-128.png" alt="gupack" /><br /><br /></h1>
|
2 |
|
3 | [![Build Status](https://travis-ci.org/RodeyManager/gupack.svg?branch=master)](https://travis-ci.org/RodeyManager/gupack)
|
4 | [![npm Status](https://img.shields.io/npm/v/gupack.svg)](https://www.npmjs.com/package/gupack)
|
5 |
|
6 | ### 安装
|
7 |
|
8 | ```javascript
|
9 | npm install -g gupack
|
10 | ```
|
11 |
|
12 | ### 命令使用参数
|
13 |
|
14 | **使用帮助查看命令:gupack -h**
|
15 |
|
16 | -p, --project 指定当前编译的项目
|
17 | -d, --dest 指定编译后的输出路径
|
18 | -e, --env 设置环境
|
19 | -s, --server 是否启动内置静态服务器
|
20 | -o, --open-browser 启动内置静态服务器是否打开默认浏览器
|
21 | -t 指定编译任务
|
22 | -T, --template 新建项目时指定模板
|
23 | -c 清理编译目录
|
24 | --host 服务器主机
|
25 | --port 服务器端口
|
26 | --liveDelay 热更新延迟时间,单位ms
|
27 | -v, --version 查看当前版本号
|
28 |
|
29 | ### 命令
|
30 |
|
31 | new <projectName> 创建项目;
|
32 | --auto-install: 新建项目后自动安装npm相关依赖模块
|
33 | -T --template: 选择项目模板
|
34 | task <taskName>(可选) 编译指定任务;
|
35 | build [<projectName>] 编译项目;
|
36 | -e, --env <env> 指定编译环境,(local:本地; dev:开发; stg:测试; prd:生产)
|
37 | -d, --dest <destPath> 指定编译输出目录
|
38 | -t <taskName> 指定编译任务(gupack build -t js+css -e dev)
|
39 | -c 编译前清空编译路径下的所有文件
|
40 | -s, --server 是否启动内置静态服务器(热更新)
|
41 | start 启动内置Node静态服务器; -o, --open-browser 启动内置静态服务器是否打开默认浏览器
|
42 | backup 备份项目;
|
43 | rollback 回滚项目(依赖于备份列表);
|
44 | clean 清空编译路径下的所有文件;
|
45 | remove <projectName> 从本地磁盘中删除(谨慎执行(u_u));
|
46 | alias <name> 为gupack设置一个全局命令别名;
|
47 | versions 查看相关版本;
|
48 |
|
49 | ### 使用说明
|
50 |
|
51 | new【新建项目】
|
52 |
|
53 | ```javascript
|
54 | // 新建项目将提示选择对应的模板
|
55 | gupack new <projectName>
|
56 | // 指定项目模板(gupack listTemplate 查看项目模板)
|
57 | gupack new mall --template <templateName>
|
58 | // 项目编译主要已gulp为基础
|
59 | ```
|
60 |
|
61 | build【编译项目】对项目进行编译
|
62 |
|
63 | ```javascript
|
64 | gupack build -e <envName>
|
65 | //编译项目可带命令参数,请查看[命令参数]
|
66 | ```
|
67 |
|
68 | task【编译指定任务】
|
69 |
|
70 | ```javascript
|
71 | gupack task <taskName>
|
72 | //未指定,将显示任务列表提示选择
|
73 | ```
|
74 |
|
75 | start【启动项目】运行 gupack 自带的静态文件服务器,便于本地调式项目(包括浏览器实时更新功能)
|
76 |
|
77 | ```javascript
|
78 | gupack start <projectName>
|
79 | //编译项目可带命令参数,请查看[命令参数]
|
80 | ```
|
81 |
|
82 | publish【发布项目】
|
83 |
|
84 | ```javascript
|
85 | gupack publish <projectName>
|
86 | //如果在gupack-config.js中配置了statics选项,则publish后,项目中的所有连接地址都会加上statics中对应配置地址
|
87 | ```
|
88 |
|
89 | ## gupack-config 项目配置(Object)
|
90 |
|
91 | * `env`:String, 当前编译环境(本地(默认):local; 开发:dev; 测试:stg; 生产:prd)
|
92 | * `sourceDir`:String, 源文件路径, 默认为项目下的 src
|
93 | * `buildDir`:String, 编译产出路径,可以是绝对或者相对路径,默认项目下的 dist
|
94 | * `port`:Number, 本地开发 Node 调式服务器端口
|
95 | * `liveDelay`:Number, 浏览器实时更新延迟时间
|
96 | * `buildTasks`:Object, 项目编译任务列表 [请查看单个任务相关配置](task)
|
97 | * `statics`: Object, 发布部署 CDN 相关配置
|
98 | * `proxy`: Object | String, 代理, [Options](https://www.npmjs.com/package/http-proxy#options)
|
99 | * `deploy`: Array, 发布部署服务器相关配置(支持多节点上传)
|
100 | * `startClean`: Boolean, 编译项目前是否清空编译目录
|
101 | * `indexFile`: String, 启动内置 Node 静态服务器,默认打开的首页,相对于 buildDir 路径
|
102 |
|
103 | ## buildTask 单个任务相关配置(Object)[name="task"]
|
104 |
|
105 | * `src`:String or Array, 当前任务编译源码(支持 glob)
|
106 | * `dest`:String, 当前任务源码编译后目录
|
107 | * `filter`:Array, 过滤列表(支持 glob)
|
108 | * `watch`:Array, 监听列表(支持 glob)
|
109 | * `nowatch`:Boolean, 是否监听文件按变化触发任务执行
|
110 | * `rely`:Array, 当前任务所依赖的任务列表
|
111 | * `loader`: Object, 任务流(gulp 插件)相关配置
|
112 | * `run`: Boolean, 是否执行当前任务
|
113 | * `before`: Function, 任务执行前
|
114 | * `after`: Function, 任务执行后
|
115 |
|
116 | ## statics 相关配置(Object)
|
117 |
|
118 | * `testExt`:regexp, 需要匹配替换的文件后缀(exp:/^\.(html|tpl|jade|md|css|scss|less|styl|vue|jsx)[^\.]\*$/i,)
|
119 | * `hostname`:String, 主机
|
120 | * `nodes`:Array, 分散节点,例如需要对图片、视频或者 js 和 css 做不同的 CDN 配置,包含独立的匹配模式
|
121 |
|
122 | exp:
|
123 | {
|
124 | extname: /^\.(png|jpg|jpeg|gif|svg|bmp|ico|webpng)[^\.]*$/i,
|
125 | pathname: 'pic',
|
126 | hostname: 'http://image.cdn.com'
|
127 | },
|
128 |
|
129 | ## deploy 相关配置(Object | Array)
|
130 |
|
131 | * `isExecute`:Boolean,是否执行部署,默认 false
|
132 | * `host`:String, 服务器主机
|
133 | * `port`:Number, 服务器端口,默认:22
|
134 | * `user`:String, 用户名
|
135 | * `pass`:String, 密码
|
136 | * `timeout`:Number, 发布上传超市时间,默认:50000
|
137 | * `localPath`: String, 上传的本地目录,默认:项目编译后的目录(支持 glob)
|
138 | * `remotePath`: String, 远程服务器目录
|
139 | * `filters`: Array, 发布上传中需要过滤的文件(支持 glob)
|
140 | * `type`:String, 部署方式("full"全量;"increment"增量),默认:full
|
141 | * `isRollback`:Boolean, 执行 rollback 命令时,当前节点是否执行回滚(可设置某节点不回滚)默认保存回滚
|
142 | * `onUploadedComplete`: Function, 发布完成事件回调
|
143 | * `onUploadedFileSuccess`: Function, 文件发布成功事件回调
|
144 | * `onUploadedFileError`: Function, 文件发布失败事件回调
|
145 | * `backup`: String | Object | Array, 发布之前进行备份 [options](https://github.com/RodeyManager/gupack/blob/master/doc/gupack-config.html)
|
146 |
|
147 | ## backup 相关配置(Object | Array)backup 的认证信息目前依赖与当前 deploy 节点配置
|
148 |
|
149 | * `isExecute`:Boolean,是否执行部署,默认 true
|
150 | * `outPath`:String, 备份输出路径
|
151 | * `mode`:String, 备份模式,local: 备份到本地; remote: 备份到当前 deploy 节点服务器上,默认:local
|
152 | * `log`:String, 打印方式,all: 打印详细信息; progress: 简单的进度条,默认:all
|
153 | * `filters`: Array, 备份中需要过滤的文件或者目录
|
154 |
|
155 | 更多认证参数请参考 [ssh2](https://github.com/mscdex/ssh2)
|
156 |
|
157 | ## [gupack-config.js](https://github.com/RodeyManager/gupack/blob/master/doc/gupack-config.js) 文件配置实例
|
158 |
|
159 | #License
|
160 | [MIT License](https://en.wikipedia.org/wiki/MIT_License)
|