coolie 好不好用,先从 hello world 开始。

1下载

使用 coolie demo 命令下载本 demo。

  1. coolie demo 1

2准备

先准备以下目录

  1. .
  2. ├── webroot-dev
  3. └── webroot-pro
  4. 2 directories, 0 files
  • webroot-dev:构建之前的项目根目录(开发目录,后面的 demo 与之相同)
  • webroot-pro:构建之后的项目根目录(生产目录,后面的 demo 与之相同)
    接下来,我们就在webroot-dev目录下开始写代码了。

3页面文件

index.html文件内容填写如下:

  1. <!DOCTYPE html>
  2. <meta charset="utf-8">
  3. <h1>Hello World</h1>

4前端构建前运行

coolie-cli 相比其他的构建工具,侵入性非常的低,未构建之前是可以正常运行的。

当前的目录结构为:

  1. .
  2. ├── webroot-dev
  3. └── index.html
  4. └── webroot-pro
  5. 2 directories, 1 file

使用 Hello World(demo1) - 图1sts 工具(sts 是一款运行静态服务器的 node 工具),在src目录下运行:

  1. sts
  2. sts >> A static server is running.
  3. open >> http://172.22.255.75:62290

会使用默认浏览器打开index.html

Hello World(demo1) - 图2

5前端构建配置文件

看到配置文件先不要紧张,coolie-cli 的配置非常的简单:

  • 用过的都说好,配置简化到最小,即使不看文档也知道
  • 一次性配置终生受用,不像其他构建工具开发一点配置一点
  • 可以使用命令生成标准(推荐的)配置文件,只需要稍加修改即可
    使用coolie init -c命令生成文件模板:
  1. cd webroot-dev
  2. coolie init -c
  3. oooo o8o
  4. `888 `"'
  5. .ooooo. .ooooo. .ooooo. 888 oooo .ooooo.
  6. d88' `"Y8 d88' `88b d88' `88b 888 `888 d88' `88b
  7. 888 888 888 888 888 888 888 888ooo888
  8. 888 .o8 888 888 888 888 888 888 888 .o
  9. `Y8bod8P' `Y8bod8P' `Y8bod8P' o888o o888o `Y8bod8P' 2.7.2
  10. ━━━━━━━━━━━━━━━━━━━━━━━━ 前端工程构建工具 ━━━━━━━━━━━━━━━━━━━━━━━━
  11. git download https://github.com/cooliejs/coolie-scaffold-self/archive/master.zip
  12. unzip /path/to/tempfile
  13. scaffold self /path/to/tempfile/coolie-scaffold-self-master
  14. init success

可以简单的看看这个文件,然后修改为:

  1. /**
  2. * ======================================================
  3. * coolie-cli 配置文件 `coolie.config.js`
  4. * 使用 `coolie init -c` 生成 `coolie.config.js` 文件模板
  5. * 当前配置文件所在的目录为构建的根目录
  6. *
  7. * @link http://coolie.ydr.me/guide/coolie.config.js/
  8. * @author ydr.me
  9. * @version 1.6.4
  10. * @create 2016-01-25 20:27:23
  11. * =======================================================
  12. */
  13. 'use strict';
  14. module.exports = function (coolie) {
  15. // coolie 配置
  16. coolie.config({
  17. // 是否在构建之前清空目标目录
  18. clean: true,
  19. // 目标配置
  20. dest: {
  21. // 目标目录,相对于当前文件
  22. dirname: '../webroot-pro/',
  23. // 目标根域
  24. host: '',
  25. // 版本号长度
  26. versionLength: 32
  27. },
  28. // js 构建
  29. js: {
  30. // 入口模块,相对于当前文件
  31. main: [
  32. // 支持 glob 语法
  33. //【1】
  34. ],
  35. // coolie-config.js 路径,相对于当前文件
  36. //【2】
  37. 'coolie-config.js': null,
  38. // js 文件保存目录,相对于 dest.dirname
  39. dest: './static/js/',
  40. // 分块配置
  41. chunk: []
  42. },
  43. // html 构建
  44. html: {
  45. // html 文件,相对于当前文件
  46. src: [
  47. // 支持 glob 语法
  48. //【3】
  49. './views/index.html'
  50. ],
  51. // 是否压缩
  52. minify: true
  53. },
  54. // css 构建
  55. css: {
  56. // css 文件保存目录,相对于 dest.dirname
  57. dest: './static/css/',
  58. // css 压缩配置
  59. minify: {
  60. compatibility: 'ie7'
  61. }
  62. },
  63. // 资源
  64. resource: {
  65. // 资源保存目录,相对于 dest.dirname
  66. dest: './static/res/',
  67. // 是否压缩
  68. minify: true
  69. },
  70. // 原样复制文件,相对于当前文件
  71. copy: [
  72. // 支持 glob 语法
  73. //【4】
  74. ]
  75. });
  76. // 使用 coolie 中间件
  77. // coolie.use(require('coolie-*'));
  78. // 自定义 coolie 中间件
  79. //coolie.use(function (options) {
  80. // // do sth.
  81. // return options;
  82. //});
  83. };
  • 【1】入口模块文件留空,没有任何 JS 文件
  • 【2】模块加载器配置文件留空,没有用到任何模块加载器
  • 【3】需要构建的 html 文件
  • 【4】需要复制的文件留空,没有任何文件需要复制

6前端构建

我们来尝试在webroot-dev目录下执行前端构建,看看会发生什么。

  1. coolie build
  2. ┌────────────────────────────────────┐
  3. coolie-cli
  4. coolie@1.6.4
  5. The front-end development builder.
  6. └────────────────────────────────────┘
  7. 1/6 >> parse coolie config
  8. coolie config >> /coolie-demo1/webroot-dev/coolie.config.js
  9. src dirname >> /coolie-demo1/webroot-dev
  10. dest dirname >> /coolie-demo1/webroot-pro/
  11. 2/6 >> copy files
  12. copy files >> no files are copied
  13. 3/6 >> build main module
  14. build app >> no main modules
  15. 4/6 >> override coolie-config.js
  16. overide config >> `coolie-config.js` is not defined
  17. 5/6 >> build html
  18. >> /index.html
  19. 6/6 >> generate a resource relationship map
  20. >> ../webroot-pro/coolie-map.json
  21. build success >> past 64ms

啊,喂,看着屏幕上的日志刷刷而过,别眨眼,来看看构建之后的目录结构:

  1. .
  2. ├── webroot-dev
  3. ├── coolie.config.js
  4. └── index.html
  5. └── webroot-pro
  6. ├── coolie-map.json
  7. └── index.html
  8. 2 directories, 4 files

从目录结构可以看到,构建之后的文件仍有index.html,但却多了一个coolie-map.json

7前端构建后运行

先切换到构建之后的目录,来看看构建之后的运行结果吧:

  1. cd ../webroot-pro
  2. sts
  3. sts >> A static server is running.
  4. open >> http://192.168.0.167:63613

Hello World(demo1) - 图3

可喜可贺,运行结果一模一样。

8前端构建后分析

仔细对比下构建前后的目录结果,基本是相同的,不同的是:

  • 构建之前有coolie.config.js,构建之后没有了
  • 构建之后由coolie-map.json,构建之前并没有
    来看看coolie-map.json
  1. {
  2. "/index.html": {
  3. "main": [],
  4. "async": [],
  5. "js": [],
  6. "css": [],
  7. "res": []
  8. }
  9. }

coolie-map.json是资源地图信息,标记了每个页面依赖了哪些资源,详细分析点这里

我们再来看看index.html

  1. <!DOCTYPE html><meta charset="utf-8"><h1>Hello World</h1>
  2. <!--coolie build-->

很明显,index.html已经被压缩了,并且打上了 coolie 的标记。

到这里,一个完整的 hello world 已经完成了。其实前端构建就这么简单,一个配置一个命令就可以完成了。

感兴趣的话,继续往下看吧。

9github

Hello World(demo1) - 图4github.com

原文: https://coolie.ydr.me/guide/hello-world