1- ![ https://github.com/sunnie/WeApp-Workflow ] ( src/assets/images/weapp-worfkflow-banner2@2x.jpg )
21
3- > [ WeApp-Workflow ] ( https://github.com/sunnie/WeApp-Workflow ) :基于Gulp 的微信小程序前端开发工作流
2+ ## weapp gulp 简介
43
5- ## 介绍
6-
7- [ ![ Greenkeeper badge] ( https://badges.greenkeeper.io/sunnie/WeApp-Workflow.svg )] ( https://greenkeeper.io/ )
8-
9- WeApp-Workflow 是一个专门为开发微信小程序打造的前端开发工作流,基于Gulp 4 开发,旨在通过工作流的方式解决微信小程序开发过程中写前端代码的痛点。
10-
11- 项目主页:[ https://github.com/sunnie/WeApp-Workflow ] ( https://github.com/sunnie/WeApp-Workflow )
12-
13- 文章介绍:[ https://devework.com/weapp-workflow.html ] ( https://devework.com/weapp-workflow.html )
14-
15- ## 功能
16-
17- ### SCSS 实时编译为 WXSS
18-
19- 使用Sass 预处理器,让写CSS 更加顺畅。` .scss ` 文件会实时编译为微信小程序支持的` .wxss ` 文件。
20-
21- ### WXSS(CSS) 中px 单位转小程序单位rpx
22-
23- 以官方推荐的iPhone 6 为标准设计格式,开发中直接写` px ` 即可自动转换为` rpx ` 。
24-
25- ``` css
26- // Input : src/pages/index/index.scss
27- .index__header {
28- font-size : 14px ;
29- margin-top : 20PX ; /* 如果为大写的`PX`单位则不会转换 */
30- }
31-
32- // Output : dist/pages/index/index.wxss
33- .index__header {
34- font-size : 28 rpx;
35- margin-top : 20PX ; /* 如果为大写的`PX`单位则不会转换 */
36- }
37-
38- ```
39-
40- ### 图片压缩
41-
42- 实时压缩图片并采用增量方式防止被重复压缩。
43-
44- ### 自动上传图片到CDN 并更新路径为https 绝对路径
45-
46- 小程序不支持相对路径的图片引用,仅支持带` https ` 协议头的绝对路径。本工作流可以将WXML 以及WXSS 文件中引用的相对路径图片上传到云存储CDN 或通过FTP/SFTP 协议上传到个人服务器空间。目前支持腾讯云,七牛云。
47-
48- ``` html
49- // Input: src/pages/index/index.wxml
50- <image src =" %ASSETS_IMG%/t.png" ></image >
51-
52- // Output: dist/pages/index/index.wxml
53- <image src =" https://cdn.devework.com/weapp/devework/t.png" ></image >
54- ```
55-
56- ### Font 文件转为base64 编码
57-
58- 小程序不支持相对路径的字体文件,本工作流可将CSS 中引用到的Font 文件转码为base64 并替换原路径。
59-
60- ```
61- // Input: src/pages/index/index.scss
62- @font-face {
63- font-family: 'fontello';
64- src: url("assets/fonts/fontello.ttf") format('truetype');
65- }
66-
67- // Output: dist/pages/index/index.wxss
68- @font-face {
69- font-family: 'fontello';
70- src: url(data:application/font-sfnt;charset=utf-8;base64,AAEAAAAPAIAA....FsASNsQIARAAA) format("truetype");
71- }
72-
73- ```
74- ### 全自动构建雪碧图及生成相应CSS
75-
76- 本功能由[ postcss-lazysprite] ( https://github.com/sunnie/postcss-lazysprite ) 插件驱动。开发中准备好图片后仅仅写一句类似` @lazysprite "xxxx" ` 的代码,即可全自动构建雪碧图及生成相应CSS。
77-
78- ``` css
79- // Input : src/app.scss
80- @lazysprite "filetype";
81-
82- // Output : dist/app.wxss
83- .icon-filetype-doc {
84- background-image : url (../sprites/filetype.png );
85- background-position : 0 0 ;
86- width : 80px ;
87- height : 80px ;
88- }
89-
90- .icon-filetype-pdf {
91- background-image : url (../sprites/filetype.png );
92- background-position : -90px 0 ;
93- width : 80px ;
94- height : 80px ;
95- }
96-
97- @media only screen and (-webkit-min-device-pixel-ratio : 2 ), only screen and (min-device-pixel-ratio:2 ) {
98- .icon-filetype-doc {
99- background-image : url (../sprites/filetype@2x.png );
100- background-position : 0 0 ;
101- background-size : 170px 170px ;
102- }
103-
104- .icon-filetype-pdf {
105- background-image : url (../sprites/filetype@2x.png );
106- background-position : -90px 0 ;
107- background-size : 170px 170px ;
108- }
109- }
110- ```
111-
112- ## 亮点
113-
114- ### Gulp4
4+ 根据 > [ WeApp-Workflow] ( https://github.com/sunnie/WeApp-Workflow ) 修改
1155
116- 采用最新的Gulp 4版本的新特征,让工作流运行更快。
117-
118- ### 简洁不简单
119-
120- 核心只有一个默认任务,通过合理的任务搭配机制减少繁琐流程及来回运行终端,让开发更便捷。
121-
122- ### 增量更新机制,运行起来更快
6+ ## 介绍
1237
124- 引入Sass 的增量编译以及图片相关任务的增量更新机制,让工作流运行速度更快。
8+ 拥有 WeApp-Workflow 的主要功能
9+ 删除了雪碧图,保留了 SCSS 实时编译为 WXSS,图片压缩
12510
126- ## 项目结构
11+
12712
128- ```
129- .
130- ├── config.custom.js // gulp自定义配置,会覆盖config.js
131- ├── config.js // gulp 配置文件
132- ├── gulpfile.js
133- ├── package.json
134- ├── src // 开发目录
135- │ ├── app.js
136- │ ├── app.json
137- │ ├── app.scss
138- │ ├── assets // 开发相关的静态文件原始资源
139- │ │ ├── fonts //字体文件
140- │ │ ├── images // 图片文件,可被上传到CDN
141- │ │ ├── scss // 一般放置SCSS 的minxins 等被import 的SCSS 文件
142- │ │ └── sprites // 生成雪碧图小图的目录
143- │ ├── image // 小程序专用的图片资源(如tabbar icon)目录
144- │ ├── pages
145- │ └── utils
146- ├── tmp // 通过src 目录编译后生成的缓存目录
147- └── dist // 通过src 目录编译后生成的文件目录,也是小程序开发的项目目录
13+ ### 新增 图片上传七牛云cdn
14814
149- ```
15+ 优化相对路径的图片引用,gulp复制文件和替换%ASSETS_IMG%/冲突,导致保存文件时小程序报错
15016
17+
15118## 开始使用
15219
153- > Node 版本建议在v4 以上。因为该工作流涉及到第三方依赖,建议在科学上网的环境下操作。
20+ > Node 版本建议在v4 以上,本人使用8.9.1,低版本容易npm i安装失败
15421
15522### 安装
15623
157- 0、请先全局按照 Gulp-cli
24+ 0、请先全局按照 Gulp-cli
15825
15926```
16027npm install gulp-cli -g
@@ -163,25 +30,24 @@ npm install gulp-cli -g
163301、通过` git clone ` 下载项目文件。
16431
16532```
166- git clone https://github.com/sunnie/WeApp-Workflow
33+ git clone https://github.com/sunnie1992/weapp-gulp
16734```
168352、建议删除` .git ` 目录(Windows 用户请手动删除)
16936
17037```
171- cd WeApp-Workflow
38+ cd weapp-gulp
17239rm -rf .git
17340```
17441
175- 3、安装必要模块
42+ 3、安装必要模块
17643
17744```
17845npm i
17946```
18047
181484、启动开发
18249
183- 建议复制` config.js ` 并重命名为` config.custom.js ` ,然后根据个人实际需求改写相关配置信息(每个配置项均有注释说明)。接下来在终端中运行如下命令开启:
184-
50+ 建议复制` config.js ` 并重命名为` config.custom.js ` ,修改七牛云配置,根据 [ gulp-qiniu] ( https://github.com/hfcorriez/gulp-qiniu ) 配置
18551```
18652gulp
18753```
@@ -190,78 +56,20 @@ gulp
19056
19157其余任务:` gulp clean ` :清除` dist ` ,` tmp ` 文件夹。
19258
193- ### 配置
194-
195- 完成以上操作后,需要在“微信web 开发者工具”也进行相关设置(以 v1.x 为准,不再兼容 v0.x 版)。
196-
197- 1、新建项目,直接选择整个项目目录,即` project.config.json ` 所在的目录作为项目目录。
198-
199- <p align =" center " >
200- <img src =" src/assets/images/s1.png " alt =" WeApp-Workflow配置 " style =" max-width :600px ;height : auto ;" >
201- </p >
202-
203- ### 开发
204-
205- 接下来进入常规开发即可。开发过程中,** 使用第三方编辑器(WebStorm、Sublime Text 等)编辑` src ` 目录下的文件** ,保存修改后gulp 进程会实时编译到` dist ` 目录相应的位置。而** 微信web 开发者工具会自动编译刷新,此时仅充当预览功能** 。
206-
207- 开发要点说明:
208-
209- - ** SCSS 开发** :直接在` src/pages/page-name ` 下进行编辑` page-name.scss ` ,会自动转化为` page-name.wxss ` 并放置到` dist ` 目录相应位置。开发过程中涉及到数值的地方直接写` px ` 单位(按iPhone6 为标准设计稿),会自动计算转化为` rpx ` 单位。如果特殊情况不想转化,请写大写的` PX ` 。
210-
211- - ** WXML开发** :除** CDN 图片** 功能需要特殊写图片路径外,其它无特殊要求。
212-
213- - ** WebFont** :先在fontell.com 这类网站制作好雪碧图然后拿到ttf 格式的文件到` src/assets/fonts ` 下,常规方式引用即可自动base64 转码。
214-
215- - ** CDN 图片** :(该功能默认关闭,需自行在设置项开启)微信小程序中wxss 或wxml 不支持相对路径的图片,需要https 开头的绝对路径。本工作流可以使得开发时候直接写相对路径,工作流会帮忙上传到CDN 并替换原路径。此类图片必须放置到` src/assets/images ` 下,然后在wxml 或CSS 中用` %ASSETS_IMG%/filename.png ` 的方式写路径。` %ASSETS_IMG% ` 为自定义的目录供后续字符串替换。
216-
217- - ** 雪碧图** :首先在小程序中不建议用雪碧图,直接用单图或者WebFont 的形式更好。如果一定要用,按照代码中的小程序示例放置** 小图目录** 到` src/assets/sprites ` 下然后在SCSS 中通过` @lazysprite "xxxx" ` 调用即可(建议调用代码放到` app.scss ` 下)。雪碧图高级用法请[ 点击这里] ( https://github.com/sunnie/postcss-lazysprite ) 。
218-
219- ## Q&A
220-
221- - Q:为什么工作流中没有AutoPrefixer 的功能?
222-
223- A:因为微信开发者工具的“项目”中“样式补全”选项已经提供了这个功能;
224-
225- - Q:为什么工作流中没有配置bable 的ES6 转ES5 的功能?
226-
227- A:如上,微信开发者工具已经提供。
228-
229- - Q:跟[ WePY] ( https://github.com/wepyjs/wepy ) 这类小程序开发框架相比优势在哪?
230-
231- A:微信支付团队开发的WePY 确实是一个不错的工具。如果跟WePY 放到同一水平线对比,WeApp-Workflow 根本没有优势。WeApp-Workflow 是一个workflow 工具,不是一个开发框架,其侧重的是小程序中CSS 层面的开发,对于一部分开发者来说,他/她的小程序并不需要WePY 那么重的开发框架。
232-
233- - Q:WeApp-Workflow 没有相应专门的编译任务(类似` gulp build ` ,` npm run build ` 这种)?
234-
235- A:是的,因为WeApp-Workflow 是适合用来开发“小”的小程序而非复杂的小程序,所以综合考虑开发速度、代码量等方面,没有专门的开发阶段一个任务(dev),开发完成阶段额外一个编译任务(buid)。直接一个任务就行。
23659
23760## 案例展示
23861
239- 这些小程序采用 WeApp-Workflow 作为开发工作流(欢迎发PR 添加案例):
240-
241- ![ devework+微信小程序] ( src/assets/images/qr-r.jpg )
62+ ![ devework+微信小程序] ( src/assets/images/qr.jpg )
24263
24364## 鸣谢
24465
245- [ tmt-workflow ] ( https://github.com/Tencent/tmt-workflow )
66+ [ WeApp-Workflow ] ( https://github.com/sunnie/WeApp-Workflow )
24667
247- [ QMUI_Web] ( https://github.com/QMUI/QMUI_Web )
248-
249- [ postcss-lazysprite] ( https://github.com/sunnie/postcss-lazysprite )
250-
251- [ gulp-qcloud-upload] ( https://github.com/sunnie/gulp-qcloud-upload )
252-
253-
254-
255- ## TODO
256-
257- - [ ] 增加单元测试
258-
259- - [ ] ES6 Rewrite
68+ ## 意见反馈
26069
261- - [ ] 上传到FTP/SFTP 服务器功能
70+ 您可以扫描添加下方的微信并备注 Soul 加交流群,给我提意见,交流学习
26271
263- - [ ] 支持七牛云存储的CDN
72+ ![ mine ] ( src/assets/images/mine.png )
26473
265- ## 意见反馈
74+ 如果对你有帮助送我一颗小星星(づ ̄3 ̄)づ╭❤~
26675
267- 如果有意见反馈或者功能建议,欢迎创建 Issue 或发送 Pull Request,感谢你的支持和贡献。
0 commit comments