hotfix
修复若干bug
升级fis-command-server至v0.6.12
升级fis-optimizer-png-compressor至v0.0.6
升级fis-spriter-csssprites至v0.2.5
升级fis-kernel至v2.0.7
hotfix 缓存依赖更新失效问题
bugfix 由于node更改normalize接口导致路径匹配错误bug
升级fis-command-server至v0.6.10
升级fis-kernel至v2.0.4
bugfix #94
clean-css 有bug,降级到1.x版本
升级fis-optimizer-clean-css至v0.0.10
升级fis-optimizer-uglify-js至v0.1.2
- uglifyjs升级至v2.4.13
- clean-css升级至v2.1.8
升级fis-optimizer-png-compressor至v0.0.5
升级fis-spriter-csssprites至v0.2.3
升级fis-optimizer-png-compressor至v0.0.4
-
[feature] csssprites支持background-size
background-size 只支持图片同倍率缩小或者放大;scale < 1缩小, scale > 1放大;其配置如下,当设置scale时,不需要给每一个规则都写上background-size,csssprites会根据scale产出正确的结果。
fis.config.set('settings.spriter.csssprites', { scale: 0.5 });
升级fis-kernel至v2.0.3
[feature] 将jsx、styl纳入默认识别的文件中
- jsx isText: true isJsLike: true mime: text/javascript
- style isText: true isCssLike: true mime: text/css
升级fis-kernel至v2.0.2
升级fis-spriter-csssprites至v0.2.0
- [bugfix] 单机多用户编译缓存冲突bug
- [bugfix] csssprites 合并后css一个规则有太多selector导致在ie6下失效的bug
升级fis-spriter-csssprites至v0.1.9
升级fis-command-release至v0.9.7
升级fis-command-server至v0.6.9
-
启动node服务器时,在document_root执行
npm install
安装依赖 -
添加注释语法,当
release -L
时替换为livereload.js的链接,这样就不需要安装浏览器插件了。注意:如果页面有
</body>
标签,就不需要再在页面使用<!--livereload-->
了。因为它跟</body>
起到相同的作用。这个功能主要提供给那些包装了body
标签的解决方案使用。
升级fis-spriter-csssprites至v0.1.8
-
添加对内联css的支持
fis.config.set('settings.spriter.csssprites', { //开启模板内联css处理,默认关闭 htmlUseSprite: true, //默认针对html原生<style></style>标签内的内容处理。 //用户可以通过配置styleTag来扩展要识别的css片段 //以下是默认<style></style>标签的匹配正则 styleReg: /(<style(?:(?=\s)[\s\S]*?["'\s\w\/\-]>|>))([\s\S]*?)(<\/style\s*>|$)/ig //**styleReg规则** //1. 默认不配置styleReg,仅支持html中默认style标签中的css内容 //2. 配置styleReg时候,仅支持styleReg匹配到的内容。 //3. styleReg正则必须捕获三个分组, // $1为:开始标签(start tag), // $2为:内容(content) , // $3为:结束标签(end tag) });
升级fis-command-release至v0.9.6
- 修复fis-conf.js中配置了livereload监听端口和hostname,但是发布的文件添加livereload.js脚本的url地址引用错误的bug。 感谢来自 @qdsang 的贡献 pull#2
升级fis-kernel至2.0.0
-
内核支持事件监听和派发(仅增加接口,尚未派发任何事件):
fis.emitter.on('compile.optimier', function(file){ //TODO }); fis.emitter.emit('release', file);
-
支持多种前缀的插件调用
fis.require.prefixes = [ 'your_package_name', 'fis' ];
配置后,fis会优先尝试加载
your_package_name-xxx
插件,后尝试加载fis-xxx
插件,此功能用于fis的包装产品中。 -
包装器负责指定
--help
需要显示帮助的命令,例如:fis.cli.help.commands = [ 'release', 'server', 'install' ];
升级fis-command-release至0.9.5
- 修复mac系统下livereload报错的bug
升级fis-kernel至v1.9.9
- 修复html的script标签中js嵌入其他非js的文本文件时结果不是字符串的bug
升级fis-kernel至v1.9.8
- 支持html中的source标签相关资源定位和嵌入功能
升级fis-kernel至v1.9.7
- 在html中支持使用<link rel="import" href="xxx?__inline">来嵌入资源,参考w3c html imports
升级fis-kernel至v1.9.6
-
只允许rel属性为
stylesheet
的link标签,在inline的时候内嵌为style标签,例如:-
v1.6.3或之前
- 源码:
<link rel="stylesheet" href="xxx?__inline"/> <link rel="abc" href="xxx?__inline"/> <link href="xxx?__inline"/>
- 编译后(未考虑rel属性) :
<link rel="stylesheet" href="xxx?__inline"/> <link rel="abc" href="xxx?__inline"/> <link href="xxx?__inline"/>
-
v1.6.4之后
- 源码:
<link rel="stylesheet" href="xxx?__inline"/> <link rel="abc" href="xxx?__inline"/> <link href="xxx?__inline"/>
- 编译后(仅对rel属性为stylesheet的link标签有效):
<style>xxx的内容</style> <link rel="abc" href="/url/of/xxx?__inline"/> <link href="/url/of/xxx?__inline"/>
-
之所以这样修改,是因为link标签不仅仅是css外联标签,还包括很多其他资源,延伸阅读请参考 link类别
-
升级fis-kernel至v1.9.5
- 文件useCompile为false的文本文件依旧支持编码转换和deploy的字符串替换
升级fis-command-server至v.0.6.8
- 新增nodejs版本server支持
- 合并--no-rewrite和--script参数,为--rewrite [script]参数
- 支持fis的包装版本在配置中指定server的各项参数
升级fis-kernel至v1.9.3
- roadmap.path支持useParser,usePreprocessor,useStandard,usePostprocessor,useLint,useTest,useOptimizer属性,用以细粒度控制编译过程
升级fis-spriter-csssprites至v0.1.7
-
修复图片使用query时不能合并csssprite的bug
-
新增矩阵布局算法,配置方法:
//此配置的默认值是'linear',线性布局 fis.config.set('settings.spriter.csssprites.layout', 'matrix');
升级fis-optimizer-clean-css至v0.0.9
- 升级依赖的clean-css包至v1.1.7
升级fis-optimizer-uglify-js至v0.1.1
- 升级依赖的uglify-js包至v2.4.6
升级fis-command-release至v0.9.4
升级fis-command-server至v0.6.7
- 不同的解决方案使用不同的缓存目录,彼此不会干扰
- 支持从环境变量中读取
FIS_SERVER_DOCUMENT_ROOT
变量作为server的文档根目录
升级fis-kernel至v1.9.2
- 支持从环境变量中读取
FIS_TEMP_DIR
变量作为fis的缓存目录 - 不同的解决方案使用不同的缓存目录,彼此不会干扰
升级fis-packager-map至v0.0.9
- 修复资源不入表时打包引用会访问的bug
升级fis-kernel至v1.9.0
注意,这可能是一个需要注意的升级,有一定的兼容性问题。
-
在js中使用__inline()语法来嵌入资源时,如果被嵌入的文件是一个
文本文件
,并且文件的isJsLike
不为true的话,则会把文件以字符串的形式嵌入到js中。比如:__inline('a.js'); //embed another js file var html = __inline('a.html'); //embed html content var css = __inline('a.css'); //embed css content var txt = __inline('a.txt'); //embed text content var img = __inline('a.png'); //embed image
编译后得到:
alert('this is content of a.js'); //embed another js file var html = "<h1>the content of a.html</h1>"; //embed html content var css = "body{\n color: red;\n}"; //embed css content var txt = "hello world\nthis is the content of a.txt"; //embed text content var img = 'data:image/gif;base64,R0lGODlhDgGBALMAAGBn6eYxLvvy9PnKyfO...Jzna6853wjKc850nPeoYgAgA7'; //embed image
这种修改会 影响到前端模板的个别使用情况,你当前使用前端模板时,如果把模板文件的属性标记为
isHtmlLike
为true
的话,会导致编译得到的模板函数变成了字符串插入到js中,请根据情况适当修改这样的配置,有问题可以在issues中留言。 -
添加
.vm
后缀为文本文件,并且isHtmlLike
为true,vm文件是velocity模板引擎文件的常用后缀。
升级fis-command-release至v0.9.3
- 修复fis release命令的
-r
参数指定了项目根目录之后读取配置文件路径错误的bug
升级fis-command-release至v0.9.2
- 支持在deploy阶段给isHtmlLike文件的</body>前自动插入livereload.js脚本,从而告别插件
升级fis-kernel至v1.8.19
升级fis-postpreprocessor-jswrapper至v0.0.8
- 修复preprocessor插件中不能插入内置require语法的bug,内置编译语法被修改为<<<require:path>>>
- jswrapper插件支持template参数
$ vi path/to/project/fis-conf.js
fis.config.merge({
settings : {
postprocessor : {
jswrapper : {
template : 'define("${id}", function(require, exports, module){ ${content} });',
}
}
}
});
升级fis-kernel至v1.8.17
- 修复css中url(xxx )代码xx之后有空格的bug
升级fis-command-release至v0.9.1
- 使用fork版的livereload-server
升级fis-command-release至v0.9.0
- 支持发布前替换文本内容,例如:
fis.config.set('deploy', {
d1 : {
to : '../output-1',
replace : {
from : 'http://www.online.com',
to : 'http://www.offline.com'
}
},
d2 : {
to : '../output-2',
replace : {
from : /(http:\/\/www)\.online\.(com)/g,
to : '$1.offline.$2'
}
}
});
升级fis-command-release至v0.8.12
- 修复deploy的include、exclude匹配的是file.subpath的bug,应该是匹配file.release
升级fis-packager-map至v0.0.8
- 打包css时删除多余的@charset标记。
升级fis-kernel至v1.8.16
- 不强制map.json的useHash属性为false,交由roadmap.path配置决定。
升级fis-kernel至v1.8.15
- 修复url中有hash路径时识别不到文件的bug
升级fis-command-release至v0.8.11
升级fis-optimizer-png-compressor至v0.0.3
升级fis-spriter-csssprites至v0.1.4
- 修改 fis release
-C
<path> 参数为 fis release-f
<path> - 升级压缩器插件,减少文件体积,提升安装速度
升级fis-kernel至v1.8.14
- html不会自动添加对useMap为false的同名文件的依赖
升级fis-kernel至v1.8.13
-
支持配置文件的md5连接符:
//默认是'_' fis.config.set('project.md5Connector', '.');
-
修复定义文件query属性时输出的bug
升级fis-kernel至v1.8.12
- 修复csssprite针对单文件处理之后文件发布时md5不匹配的bug
- 包装fis的系统能自动识别release\install\server三条命令
升级fis-kernel至v1.8.11
- 修复fis.uri.getId如果指向一个目录时居然会返回id的bug
升级fis-kernel至v1.8.10
升级fis-command-server至v0.6.5
升级fis-command-release至v0.8.10
-
fis server clean支持使用
--include
、--exclude
参数来指定清除调试目录时的过滤器,例如:fis server clean --include template_c/**
-
fis release 支持使用
-f
或者--file
参数制定配置文件名称,默认是fis-conf.js
,配置文件请尽量使用fis-
作为文件名前缀,并放置到项目根目录下。例如:fis release --file fis-conf-dev.js
升级fis-kernel至v1.8.9
- 新增asp.NET体系下的文件识别
- 对于不是图片也也不是文本的文件设置useCompile为false
- 修复uglify插件报错不识别的bug
升级fis-command-release至v0.8.9
- 修复超多文件时发布任务队列递归爆栈的bug
升级fis-kernel至v1.8.8
- project配置节点支持include、exclude配置,用以排除项目中不是源码的文件。用法:
//支持通配,请从项目根目录开始写起,如果配了include,则要发布的源码只匹配的文件。
fis.config.set('project.include', '/static/**');
//也支持正则
fis.confis.set('project.exclude', /\/_debug\//i);
升级fis-postprocessor-jswrapper至v0.0.6
- 支持模板包装方式,配置为:
//${content}作为源码替换的标记
fis.config.set('settings.postprocessor.jswrapper.tempalte', '!function(){${content}}();');
升级fis-kernel至v1.8.7
- 修复utf8编码识别bug
剔除readme中的恶心品牌
升级fis-kernel至v1.8.6
- 文件对象添加useCache属性,默认值是
true
,如果设置为false,则不会对编译结果建立缓存。例如:
fis.config.set('roadmap.path', [
{
reg : '**.oncache.js',
useCache : false
}
]);
升级commander至v1.3.2
升级fis-kernel至v1.8.5
- 将postpackager插件的调用时机提到map.json文件创建之前,如果有在postpackager插件中处理map.json的地方,
请谨慎升级这个版本
升级fis-spriter-csssprites至v0.1.3
- 修复找不到图片时csssprite的替换处理操作,提升运行性能
升级fis-optimizer-uglify-js至v0.1.0
- 升级fis-optimizer-uglify-js依赖的压缩工具uglify-js至v2.4.0
升级fis-command-release至v0.8.8
- 升级chokidar依赖到最新版的0.6.3,使用后台运行watch
升级fis-command-server至v0.6.4
- 支持jsp解析
1.3.4因为npm的问题不能发布,额外发布一个新版本
升级colors至v0.6.2
- 使用原版的colors,不再使用fix的版本
升级fis-command-server至v0.6.3
- 支持没有php-cgi环境时,server启动一个简单的静态资源服务器
升级fis-command-server至v0.6.2
- 修复gnome下不能打开目录的bug
升级fis-kernel至v1.8.4
- 修复html中使用 <link href="xx.css?__inline"/> 嵌入时的编译bug
升级fis-kernel至v1.8.3
-
完善核心的报错信息
-
在类html文件中使用link标签嵌入资源可以保留link标签上的属性给编译后的style标签。例如:
<link rel="stylesheet" type="text/css" href="pdf.css?__inline" media="print" data-test="msg">
编译后得到
<style type="text/css" media="print" data-test="msg">...</style>
升级fis-spriter-csssprites至v0.1.2
升级fis-optimizer-png-compressor至v0.0.2
- PNG压缩工具支持Windows X64(64位node)
- csssprites支持Windows X64(64位node)
升级fis-command-release至v0.8.7
- 将--debug参数修改为--verbose
升级fis-postprocessor-jswrapper至v0.0.5
- 如果文件已经自己手写了define,则不对其进行强制包装
- 默认配置开启csssprites
升级fis-kernel至v1.8.2
删除对 fis-optimizer-html-minifier 的依赖, 不再压缩html
- 区分script标签的type属性,如果有type属性,而且属性值不为text/javascript,则当做html处理
- 从核心中剔除html压缩工具,理由是:
-
收益非常非常小。大多数产品线线上都开启了gzip,线下压缩相当多余,最后送达到用户浏览器的html大小没差别
-
各种压缩选项非常危险。比如
removeRedundantAttributes
会删除 <input type="text"> 元素的type属性,虽然逻辑上是等价的,但是会导致有些css属性选择器失效 -
removeCDATASectionsFromCDATA
压缩选项有bug,如下html:<script type="text/template">a<!--div--></script>
压缩完得到:
<script type=text/template>a<!--div</script>
-
就算所有压缩选项都关闭,只保留空格压缩选项,也有问题。删除空格后会影响元素间距,这会给平时开发带来困扰,因为平时开发fis release通常不会加
--optimize
参数,等到上线才会加上,一旦加上,却和开发中的效果不一致,这是非常郁闷的。 -
对于特别留恋html-minifier的同学,不要桑心,它还在npm上,只是不是fis内核提供而已,要想使用它,你需要:
# 安装它 npm install -g fis-optimizer-html-minifier
再在项目的配置文件里使用它就可以了:
fis.config.set('modules.optimizer.html', 'html-minifier');
-
升级fis-kernel至v1.8.1
升级fis-optimizer-html-minifier至v0.0.6
- 修复roadmap.path的release中出现多个'//'的时候被替换为空字符串的bug
- 修改html压缩器的默认配置,不移除多余属性,因为这些属性可能是css选择器需要的
升级fis-kernel至v1.8.0
- fis.compile方法支持对不存在的文件对象进行编译,不过没有缓存
使用fis-optimizer-png-compressor作为png图片压缩插件
-
图片压缩支持pngcrush和pngquant压缩器选择,默认为pngcrush,如果要切换为pngquant,可在配置文件中设置:
fis.config.set('settings.optimizer.png-compressor.type', 'pngquant');
或者:
fis.config.merge({ settings : { optimizer : { 'png-compressor' : { type : 'pngquant' //default is pngcrush } } } });
pngcrush压缩会保持原来的色彩位数,如果原图片的色彩超过256色,在ie6下背景无法透明,会出现灰色的填充色背景。pngquant会强制把各种png图片压缩为png8格式,因此对于png24的图片压缩后会出现一定的质量折损(基本都是可以接受的),对于需要兼容ie6的产品线推荐使用pngquant作为压缩器。
升级fis-optimizer-pngcrush至v0.0.6
- 修复小于1k的png图片压缩bug
升级fis-kernel至v1.7.9
-
支持roadmap.path配置指定文件不经过编译处理,例:
fis.config.merge({ roadmap : { path : [ { reg : '**.js', //所有的js文件 useCompile : false //不要经过编译处理 } ] } });
升级fis-command-release至v0.8.6
-
deploy支持
subOnly
参数,支持只发布子目录的需求,例如:fis.config.merge({ deploy : { local : { from : '/static', to : '../output' } } });
如果执行 fis release -d
local
,则把编译后的/static
目录复制到../output
中,得到../output/static
,添加subOnly
参数后:fis.config.merge({ deploy : { local : { from : '/static', to : '../output', subOnly : true } } });
如果执行 fis release -d
local
,则把编译后的/static的子目录
复制到../output
中,得到../output/**
升级fis-kernel至v1.7.8
升级fis-command-release至v0.8.5
- 允许没有pack配置仍然进入打包逻辑
- 修复打包处理阶段不能修改内容的bug
- .ico文件默认不做hash输出
升级fis-optimizer-pngcrush至v0.0.6
- 修复pngcrush压缩压缩时图片不是png格式的bug
升级fis-optimizer-clean-css至v0.0.8 升级fis-optimizer-pngcrush至v0.0.4
- 升级clean-css依赖的版本至v1.0.12,并且不允许clean-css处理@import标记,由fis接管
- 升级node-pngcrush版本至v0.0.6,超强的压缩效果
升级fis-kernel至v1.7.7
- 修复无后缀文件的处理失败的bug
升级fis-command-server至v0.6.1
- 采用spawn的detached参数技术替代实现nohup功能
升级fis-packager-map至v0.0.7
- 修复打包配置不支持单独的正则bug
内置fis-optimizer-pngcrush插件
- 推出png图片自动压缩功能
升级fis-kernel至v1.7.5
- 修复文本文件缓存处理bug
升级fis-kernel至v1.7.4
升级fis-command-release至v0.8.4
- 支持对图片进行pipe处理和缓存控制,为图片压缩做准备
- 修复新建文件没有添加文件监听的bug
升级fis-kernel至v1.7.3
- 修复fis.util.clone的bug
升级fis-kernel至v1.7.2
升级fis-command-release至v0.8.3
升级fis-packager-map至v0.0.6
-
自动上传限制了并发数,一次最多只开启5个并发的上传请求
-
调整了打包策略,例如:
fis.config.merge({ pack : { 'static/pkg/ui.js' : ['widget/**.js', 'components/**.js'], 'static/pkg/others.js' : '**.js' } });
如果在项目中,有a.js依赖了widget/b.js的话,在
1.0.6
或以前版本,会在吧a.js
合并到others.js
的时候,就近将widget/b.js
也并入到others.js
(很明显,widget/b.js也符合others.js包的合并约束条件) 。1.0.7以后,将不会做这样的处理,而将widget/a.js
合入到ui.js
中。
升级fis-kernel至v1.7.1
-
roadmap.path支持使用
useMap
指定文件是否入map.json表。用法:fis.config.merge({ roadmap : { path : [ { reg : '**.png', useMap : true }, { reg : 'test/**', useMap : false } ] } });
升级fis-kernel至v1.7.0
升级fis-packager-map至v0.0.5
-
用户可以使用namespaceConnector配置节点来定义命名空间连接符,默认为“:”。用法:
fis.config.merge({ namespace : 'common', namespaceConnector : '/' });