1下载

使用 coolie demo 命令下载本 demo。

  1. coolie demo 2

2demo

2.1初始化目录

新建一个coolie-demo2目录:

  1. coolie-demo2
  2. └── webroot-dev
  3. 1 directories, 0 files

2.2初始化文件

2.2.1index.html

  1. <!doctype html>
  2. <meta charset="utf-8">
  3. <script src="coolie-demo2.js"></script>

2.2.2coolie-demo2.js

  1. window.onload = function() {
  2. alert('coolie demo2');
  3. };

此时的目录结构为:

  1. .
  2. └── webroot-dev
  3. ├── coolie-demo2.js
  4. └── index.html
  5. 1 directories, 2 files

2.3构建前运行

使用 JS 基本构建(demo2) - 图1sts 执行:

  1. cd webroot-dev
  2. sts
  3. sts >> A static server is running.
  4. open >> http://192.168.0.157:55119

JS 基本构建(demo2) - 图2

2.4前端构建配置

在构建之前,依然需要配置,通过之前的 hello world 一节,想必你对 coolie 的配置也有一定的了解了。再来复习一次。

使用coolie init -c生成coolie.config.js(前端构建工具的配置文件):

  1. coolie init -c
  2. oooo o8o
  3. `888 `"'
  4. .ooooo. .ooooo. .ooooo. 888 oooo .ooooo.
  5. d88' `"Y8 d88' `88b d88' `88b 888 `888 d88' `88b
  6. 888 888 888 888 888 888 888 888ooo888
  7. 888 .o8 888 888 888 888 888 888 888 .o
  8. `Y8bod8P' `Y8bod8P' `Y8bod8P' o888o o888o `Y8bod8P' 2.7.2
  9. ━━━━━━━━━━━━━━━━━━━━━━━━ 前端工程构建工具 ━━━━━━━━━━━━━━━━━━━━━━━━
  10. git download https://github.com/cooliejs/coolie-scaffold-self/archive/master.zip
  11. unzip /path/to/tempfile
  12. scaffold self /path/to/tempfile/coolie-scaffold-self-master
  13. init success

修改coolie.config.js为:

  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-26 10:06:22
  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. '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. // './favicon.ico',
  74. // './robots.txt'
  75. //【4】
  76. ]
  77. });
  78. // 使用 coolie 中间件
  79. // coolie.use(require('coolie-*'));
  80. // 自定义 coolie 中间件
  81. //coolie.use(function (options) {
  82. // // do sth.
  83. // return options;
  84. //});
  85. };

修改点:

  • 【1】:去掉了入口模块,此处没有用到模块化
  • 【2】:模块配置文件也没有,设置为 null
  • 【3】:修改需要构建的 html 文件路径
  • 【4】:去除了原样复制文件配置
    此时的目录结构为:
  1. .
  2. └── webroot-dev
  3. ├── coolie-demo2.js
  4. ├── coolie.config.js
  5. └── index.html
  6. 1 directory, 3 files

2.5前端构建

执行构建:

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

构建之后的目录结构为:

  1. .
  2. ├── webroot-dev
  3. ├── coolie-demo2.js
  4. ├── coolie.config.js
  5. └── index.html
  6. └── webroot-pro
  7. ├── coolie-map.json
  8. ├── index.html
  9. └── static
  10. └── js
  11. └── b421893239552ab5531042432f4f2bcb.js
  12. 4 directories, 6 files

2.6构建后运行

切换到webroot-pro目录再次执行:

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

JS 基本构建(demo2) - 图3

成功运行,下面来分析下构建之后的结果吧。

2.7分析构建结果

2.7.1index.html

先来看看构建之后的 html 文件:

  1. <!doctype html><meta charset="utf-8"> <script src="/static/js/b421893239552ab5531042432f4f2bcb.js"></script>
  2. <!--coolie build-->
  • script 路径由原来的 coolie-demo2.js 变为 /static/js/b421893239552ab5531042432f4f2bcb.js
  • html 的内容被压缩了

2.7.2js 文件

js 文件的文件名被修改了(JS 基本构建(demo2) - 图4为什么要这么做?

  1. window.onload=function(){alert("coolie demo2")};

可见,js 的内容也经过了压缩。

3github

JS 基本构建(demo2) - 图5github.com

原文: https://coolie.ydr.me/guide/build-js-base