fis3 通过配置来决定代码、资源该如何处理,包括配置、压缩、CDN、合并等;

配置API

fis.set()

设置一些配置,如系统内置属性 projectnamespacemodulessettingsfis.set 设置的值通过fis.get()获取

语法

fis.set(key, value)

参数

fis.set('namespace', 'home');
fis.set('my project namespace', 'common');
fis.set('a.b.c', 'some value'); // fis.get('a') => {b: {c: 'some value'}}

fis.get()

获取已经配置的属性,和 fis.set() 成对使用

语法

fis.get(key)

参数

// fis.set('namespace', 'common')
var ns = fis.get('namespace');

// fis.set('a.b.c', 'd')
fis.get('a'); // => {b:{c: 'd'}}
fis.get('a.b'); // => {c:'d'}
fis.get('a.b.c'); // => 'd'

fis.match()

给匹配到的文件分配属性,文件属性决定了这个文件进行怎么样的操作;

fis.match 模拟一个类似 css 的覆盖规则,负责给文件分配规则属性,这些规则属性决定了这个文件将会被如何处理;

就像 css 的规则一样,后面分配到的规则会覆盖前面的;如

fis.match('{a,b}.js', {
    release: '/static/$0'
});

fis.match('b.js', {
    release: '/static/new/$0'
});

b.js 最终分配到的规则属性是

{
    release: '/static/new/$0'
}

那么 b.js 将会产出到 /static/new 目录下;

语法

fis.match(selector, props[, important])

参数

fis.match('*.js', {
  useHash: true,
  release: '/static/$0'
});

fis.media()

fis.media 是模仿自 css 的 @media,表示不同的状态。这是 fis3 中的一个重要概念,其意味着有多份配置,每一份配置都可以让 fis3 进行不同的编译;

比如开发时和上线时的配置不同,比如部署测试机时测试机器目录不同,比如测试环境和线上机器的静态资源 domain 不同,一切这些不同都可以设定特定的 fis.media 来搞定;

语法

fis.media(mode)

参数

返回值

`fis` 对象
fis.media('dev').match('*.js', {
    optimizer: null
});

fis.media('rd').match('*.js', {
  domain: 'http://rd-host/static/cdn'
});

fis.plugin()

插件调用接口

语法

fis.plugin(name [, props [, position]])

属性

文档内容有误,可提 PR,文档地址: /doc/docs/api/config-api.md