0.1.8 • Published 10 years ago

zhandlebars v0.1.8

Weekly downloads
3
License
MIT
Repository
github
Last release
10 years ago

zHandlebars

zHandlebars 是一个基于 Handlebars 的项目生成器。

How

我们会需要根据一组模板生成一个初始项目,一般来说,目录复制,然后改一些小地方即可。

但还有可能生成的文件名和项目名有关系,目录结构可能也和项目名有关,甚至会根据一组不定数量的最终生成的文件等等。

zHandlebars 就是用来做这件事的。

我们基于模板引擎 Handlebars ,也就是说所有的语法和 Handlebars 一致,我们就是在 Handlebars 对一个文件处理的基础上,增加了一个组合配置文件,而且这个配置文件支持通配符,支持 Handlebars 语法。

这个配置文件我们用json的格式来保存:

[
  {"name": "{{projname_lc}}", "src": "", "type": "dir"},
  {"name": "{{projname_lc}}/bin/{{projname_lc}}.js", "src": "/main/bin/main.js", "type": "file"},
  {"name": "{{projname_lc}}/config.js", "src": "/main/config.js", "type": "file"},
  {"name": "{{projname_lc}}/package.json", "src": "/main/package.json", "type": "file"},
  {"name": "{{projname_lc}}/lib/*.js", "src": "/main/lib/*.js", "type": "file"},
  {"name": "{{projname_lc}}/src/*.js", "src": "/main/src/*.js", "type": "file"},
  {"name": "{{projname_lc}}/ctrl/*.js", "src": "/main/ctrl/*.js", "type": "file"}
]

上面可以看到,其实这个配置文件就是一个简单的json数组,每个元素是一条匹配条件,其中 name 表示目标文件或目录名,src 表示原始文件名,type 是类型,目前就 dirfilebinfile 3种,如果是 dir,就只是建目录而已,所以 src 可以给空字符串。

特别提一下 overwrite 属性,这个属性主要用于 typefile 或者 binfile 的,有3个值,分别是 wrrw ,表示如果源文件存在时,是直接覆盖写,还是彻底放弃处理,或者是读取已经存在的目标文件里的标识内容,重新整合写入,默认是 w ,如果是 binfilerw 就是 w

如果是 file 或者 binfile ,这里支持通配符,通配符的规则兼容 glob

规则上,是会先把这个配置文件通过模板引擎 Handlebars 处理一轮,然后按顺序新建目录和文件,新建文件的时候,其实会自动把不存在的目录生成出来的,不需要特别处理目录。

有了配置文件和模板文件外,使用起来就非常简单了。

"use strict";

var path = require('path');
var zhandlebars = require('../lib/index');

let params = {projname: 'test', projname_lc: 'test'};
zhandlebars.procProj(params, path.join(__dirname, './zrestify.json'), path.join(__dirname, './'));

更新说明

  • ver 0.1.7
  • json配置文件里支持 overwrite ,可以决定这个文件的覆盖规则,主要用于处理文件时,如果目标文件已经存在,使用何种方式来处理。

  • ver 0.1.6

  • json配置文件里支持 jscode ,可以在处理这个文件的时候执行一段js脚本,主要是用来处理批量的参数的。

  • ver 0.1.3

  • 支持 binfile 类型,对于不需要模板处理的文件都可以这样设置,会快一些。

使用到的第三方库

  • 使用 glob 做文件通配符处理。
  • 使用 handlebars 模板做基本代码模板。
0.1.8

10 years ago

0.1.7

10 years ago

0.1.6

10 years ago

0.1.5

10 years ago

0.1.3

10 years ago

0.1.2

10 years ago

0.1.1

10 years ago

0.1.0

10 years ago