Skip to content

Instantly share code, notes, and snippets.

@gwuhaolin
Last active August 4, 2016 06:51
Show Gist options
  • Save gwuhaolin/9a3596c46c1e30eae44195d24558f74a to your computer and use it in GitHub Desktop.
Save gwuhaolin/9a3596c46c1e30eae44195d24558f74a to your computer and use it in GitHub Desktop.
typescript d.ts file for fis3
/**
* typescript d.ts file for fis3
*/
module fis {
/**
* fis 插件
*/
interface plugin {
}
/**
* 设置规则的配置接口
* @param selector FIS3 把匹配文件路径的路径作为selector,匹配到的文件会分配给它设置的 props。关于 selector 语法,请参看 Glob 说明
* @param props 编译规则属性,包括文件属性和插件属性,更多属性
*/
export function match(selector: string|RegExp, props: {
/**
* 设置文件的产出路径。默认是文件相对项目根目录的路径,以 / 开头。该值可以设置为 false ,表示为不产出(unreleasable)文件。
*/
release?: string,
/**
* 分配到这个属性的文件将会合并到这个属性配置的文件中
*/
packTo?: string,
/**
* 用来控制合并时的顺序,值越小越在前面。配合 packTo 一起使用。
*/
packOrder?: number,
/**
* 指定文件的资源定位路径之后的query,比如'?t=123124132'。
*/
query?: string,
/**
* 指定文件的资源id。默认是 namespace + subpath 的值
*/
id?: string,
/**
* 指定文件资源的模块id。在插件fis3-hook-module里面自动包裹define的时候会用到,默认是 id 的值。
*/
moduleId?: string,
/**
* 指定文件的资源定位路径,以 / 开头。默认是 release 的值,url可以与发布路径 release 不一致。
*/
url?: string,
/**
* 指定文本文件的输出编码。默认是 utf8,可以制定为 gbk 或 gb2312等。
*/
charset?: string,
/**
* 指定对文件进行 html 相关语言能力处理
*/
isHtmlLike?: boolean,
/**
* 指定对文件进行 css 相关的语言能力处理
*/
isCssLike?: boolean,
/**
* 指定对文件进行 js 相关的语言能力处理
*/
isJsLike?: boolean,
/**
* 文件是否携带 md5 戳
* 文件分配到此属性后,其 url 及其产出带 md5 戳;
*/
useHash?: boolean,
/**
* 给文件 URL 设置 domain 信息
* 如果需要给某些资源添加 cdn,分配到此属性的资源 url 会被添加 domain;
*/
domain?: string,
/**
* 设置最终文件产出后的后缀
* 分配到此属性的资源的真实产出后缀
*/
rExt?: string,
/**
* 文件信息是否添加到 map.json
* 分配到此属性的资源出现在静态资源表中,现在对 js、css 等文件默认加入了静态资源表中
*/
useMap?: boolean,
/**
* 标示文件是否为组件化文件。
* 标记文件为组件化文件。被标记成组件化的文件会入map.json表。并且会对js文件进行组件化包装。
*/
isMod?: boolean,
/**
* 在[静态资源映射表][]中的附加数据,用于扩展[静态资源映射表][]表的功能。
*/
extras?: Object,
/**
* 默认依赖的资源id表
*/
requires?: [string],
/**
* 开启同名依赖
* 当设置开启同名依赖,模板会依赖同名css、js;js 会依赖同名 css,不需要显式引用。
*/
useSameNameRequire?: boolean,
/**
* 文件是否使用编译缓存
* 当设置使用编译缓存,每个文件的编译结果均会在磁盘中保存以供下次编译使用。设置为 false 后,则该文件每次均会被编译。
*/
useCache?: boolean,
/**
* 启用 lint 插件进行代码检查
*/
lint?: plugin|[plugin],
/**
* 启用 parser 插件对文件进行处理;
*/
parser?: plugin|[plugin],
/**
* 标准化前处理
*/
preprocessor?: plugin|[plugin],
/**
* 自定义标准化,可以自定义 uri、embed、require 等三种能力,可自定义三种语言能力的语法;
*/
standard?: plugin|[plugin],
/**
* 标准化后处理
*/
postprocessor?: plugin|[plugin],
/**
* 启用优化处理插件,并配置其属性
*/
optimizer?: plugin|[plugin]
/**
* 打包预处理插件
*/
prepackager?: plugin|[plugin],
/**
* 打包插件
*/
packager?: plugin|[plugin],
/**
* 打包后处理插件。
*/
postpackager?: plugin|[plugin],
/**
* 为了减少资源网络传输的大小,通过压缩器对 js、css、图片进行压缩是一直以来前端工程优化的选择。在 FIS3 中这个过程非常简单,通过给文件配置压缩器即可。
*/
optimizer?: plugin|[plugin],
/**
* 设置项目发布方式
* 编译打包后,新增发布阶段,这个阶段主要决定了资源的发布方式,而这些方式都是以插件的方式提供的。比如你想一键部署到远端或者是把文件打包到 Tar/Zip 又或者是直接进行 Git 提交,都可以通过设置此属性,调用相应的插件就能搞定了。
* 假设项目开发完后,想部署到其他机器上,我们选择 http 提交数据的方式部署
*/
deploy?: plugin|[plugin],
/**
* 我们还可以对图片进行合并,来减少请求数量
*/
spriter?: plugin|[plugin],
});
/**
* 接口提供多种状态功能,比如有些配置是仅供开发环境下使用,有些则是仅供生产环境使用的。
* @param name
*/
export function media(name: string);
/**
* 加载插件
* @param name
* @param props
*/
export function plugin(name: string, props: {}): plugin|[plugin];
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment