脚手架使用文档
介绍
如果你使用的是FIS,如果你感觉有一些东西可以做成规范实行起来,如果你有一些公用的模板或者组件的框架,那么就使用脚手架吧。方便快捷简单的搞定上面提到的这些问题。
使用方法
目录:
基本用法
Usage: init <command> [options] Commands: module create a module widget create a widget Options: -h, --help output usage information -s, --scaffold <scaffold> -d, --dir <name> create to dir --with-plugin
如上,脚手架支持创建一个模块(module)和widget(widget),其使用方法是;
新建一个模块
$ fis init module -d common --with-plugin // common只是一个文件夹,可以是任何目录, --with-plugin意思是是否包含fis提供的smarty插件(fis-plus)
or
$ fis init module -d no-common // no-common只是一个文件夹,可以是任何目录
新建一个widget
$ fis init widget -d header
安装模块中使用到的fis插件
如果你的项目用了未在FIS中默认依赖的插件,比如sass,比如某某某; 当一个新人拿到这样一个模块时,需要安装这些插件,但如果没有文档说明这些,TA最多看到release时的一个报错,然后不知所措; 脚手架支持这样一个功能,自动安装这些插件。
在模块目录下执行;
$ fis init
下载其他组件
eg,
下载modjs
$ fis init modjs
如果想看看还能下载那些包;
$ fis init --list
高级用法
这节主要说一下脚手架的定制,脚手架默认附带一份模板和插件,后面会具体说明模板
和插件
。
模板
模板就是已经被创建好的module和widget;里面体现了公用的编码规范,和一些可替换的全局变量;这块很重要,是整个脚手架的核心。 这个模板里面可以说明:
- js组件如何导出函数
- js组件如何使用,使用规范是什么
- 注释如何写
- css组件如何写
- fis-conf.js公用的配置
- 其他
有了模板,还需要有一些不一样的地方,就比如注释里面的作者、时间;还有fis-conf.js里面的namespace等。这种修改怎么办,脚手架提供一种方法。
当制作模板的时候使用{{- namespace -}}
这种方式后,再进行创建的时候需要使用者输入namespace
的值。
插件
插件是用来进行一些目录调整的、文件名替换、下载模板等;
详细步骤
- 制作模板
- module模板
- widget模板
- 全局变量
- 发布模板
- 制作插件
- 发布插件
制作模板
#module模板
假设module中包含
- fis-conf.js // fis配置文件
- page/layout.tpl // layout.tpl
- page/index.tpl // 页面模板
- plugin/* // 插件
- test/page/index.php // index页面测试数据
- widget/header.tpl // widget tpl模板
- widget/header.css // widget css文件
- widget/header.js // widget js文件
那就创建这些文件,并完善;
$ tree iknow-scaffold-moduleiknow-scaffold-module ├── fis-conf.js ├── page │ ├── index.tpl │ └── layout.tpl ├── plugin └── widget └── header ├── header.css ├── header.js └── header.tpl
widget模板
widget模板中包含
- widget.tpl
- widget.js
- widget.css
#全局变量
比如 fis-conf.js
fisconfig
以上说明了以下模板的制作过程,更详细请安装已经设定好的模板作为参考
$ lights install pc-scaffold-module
发布模板
FIS提供了包组件管理平台lights,你可以方便的把包发布到lights上;
$ cd iknow-scaffold-module$ lights init //要求安装lights...$ lights publish
done.
脚手架内核提供了从lights下载包的方法;
/** * options.exclude [RegExp]需要排除的文件 * options.include [RegExp]需要的文件 * dist 目标目录 */fisscaffold;
下载完成以后,需要呼出交互界面替换全局变量的接口;
/** * dir 下载组件存放的文件夹 */fisscaffoldpromptdir;
还提供了一个mv接口,用来做文件或文件夹移动的;
fisscaffold;
其他接口;
还可以使用fis.util
里面的所有方法;
$ node> fis = ;> fisutil Function is: Function map: Function pad: Function merge: Function clone: Function escapeReg: Function escapeShellCmd: Function escapeShellArg: Function stringQuote: Function getMimeType: Function exists: Function fs: Stats: Function exists: Function existsSync: Function readFile: Function readFileSync: Function close: Function closeSync: Function open: Function openSync: Function read: Function readSync: Function write: Function writeSync: Function rename: Function renameSync: Function truncate: Function truncateSync: Function ftruncate: Function ftruncateSync: Function rmdir: Function rmdirSync: Function fdatasync: Function fdatasyncSync: Function fsync: Function fsyncSync: Function mkdir: Function mkdirSync: Function readdir: Function readdirSync: Function fstat: Function lstat: Function stat: Function fstatSync: Function lstatSync: Function statSync: Function readlink: Function readlinkSync: Function symlink: Function symlinkSync: Function link: Function linkSync: Function unlink: Function unlinkSync: Function fchmod: Function fchmodSync: Function lchmod: Function lchmodSync: Function chmod: Function chmodSync: Function lchown: Function lchownSync: Function fchown: Function fchownSync: Function chown: Function chownSync: Function _toUnixTimestamp: Function: toUnixTimestamp utimes: Function utimesSync: Function futimes: Function futimesSync: Function writeFile: Function writeFileSync: Function appendFile: Function appendFileSync: Function watch: Function watchFile: Function unwatchFile: Function realpathSync: Function: realpathSync realpath: Function: realpath createReadStream: Function ReadStream: Function: ReadStream super_: Object FileReadStream: Function: ReadStream super_: Object createWriteStream: Function WriteStream: Function: WriteStream super_: Object FileWriteStream: Function: WriteStream super_: Object SyncWriteStream: Function: SyncWriteStream super_: Object realpath: Function realpathSafe: Function isAbsolute: Function isFile: Function isDir: Function mtime: Function touch: Function isWin: Function isTextFile: Function isImageFile: Function md5: Function base64: Function mkdir: Function toEncoding: Function isUtf8: Function readBuffer: Function read: Function write: Function filter: Function find: Function del: Function copy: Function ext: Function query: Function pathinfo: Function camelcase: Function pipe: Function parseUrl: Function download: Function upload: Function install: Function readJSON: Function glob: Function nohup: Function normalize: Circular
制作插件
插件需要放到npm上,插件命名规范fis-scaffold-<插件名>
。具体可参考fis-scaffold-pc
插件接口:
/** * options * options.dir 安装到dir目录下 * options.withPlugin 是否带插件 */module { ... //必须导出widget和module两个接口 return {...} {...} ;}
插件完成后发布npm;
那么这个插件如何使用呢;假设自定义了一个插件fis-scaffold-iknow
.
那么使用的时候
# 使用-s选择某个脚手架 $ fis init module -s iknow -d common$ fis init widget -s iknow -d footer
发布插件
$ npm publish