-
Notifications
You must be signed in to change notification settings - Fork 96
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
使用 -o 参数,fis-conf.js 里对 html 不优化,则不会自动修改 js 引用 #5
Comments
??? 没明白你的意思,再仔细描述一下呢 |
比如,header.html 中,引用了 a.coffee,不用 -o 的时候,会编译为 a_123abc.js。
会编译为:
而用了 -o 以后,a.coffee 编译后成了 a_456def.js,然而 header.html 中,script 的引用还是 a_123abc.js ,没有变成 a_456def.js |
@celtavonce 不可能啊,fis是压缩编译完成之后才替换的url地址 |
我是先用 不带 -o 的编译了一次,然后又用 -o 编译了一次,会有影响么?
导致了 html 都被忽略了 |
@celtavonce -o与非-o彼此没有影响,不过建议切换参数的时候,加上-c参数清理编译缓存,比如: fis release -co
# 或者
fis release -c 鉴于你的问题,建议在github上开一个demo项目,有问题我可以在我本地构建你的项目来查看问题 |
@fouber
我刚才自己也试过了,在这个 demo 的 web 目录里直接运行 结合我在另一个 issue 里提到的 png 的问题,感觉像是 |
@celtavonce 看了一下,原因是使用了fis.config.merge这个接口来设置roadmap.path这个数组导致的。 rsd内置了一个简单的 规范 : fis.config.set('roadmap.path', [
{
reg: '**.ejs', // 所有ejs后缀的文件
release: false // 作为内嵌使用,不发布
},
{
reg: '**.handlebars', // 所有handlebars后缀的文件
release: false // 作为内嵌使用,不发布
},
{
reg: /\/_[^\/]+$/, // 以_开头的文件
release: false // 不发布
}
]); 然后你的配置,使用了fis.config.merge这个接口,它是一个 对象深度merge 的接口,原始的roadmap.path值是上面的那些,当你这样调用接口的时候: fis.config.merge({
roadmap:
path: [
{
reg : "lib/**",
useOptimizer: false
},
{
reg: "**.html",
useOptimizer: false
}
]
}); 这样做在遇到数组的时候,会用对应的元素跟原来位置上的元素做合并,最终得到的roadmap.path的数据结构变成了: [
{
reg : "lib/**",
useOptimizer: false,
release: false
},
{
reg: "**.html",
useOptimizer: false,
release: false
},
{
reg: /\/_[^\/]+$/, // 以_开头的文件
release: false // 不发布
}
] 所以导致所有html文件不发布。 另外,reg: "lib/" 的真正含义是项目根目录下的lib目录下的所有文件,这条reg其实没有匹配到任何内容的,因为你的lib目录在public下,如果使用字符串glob,应该配置成:reg: "public/lib/"。 说明了问题,谈一下解决方案: 方案1:配置文件中使用fis.config.set接口(推荐) fis.config.set('project.md5Length', 10);
fis.config.set('project.exclude', 'public/images/emoji/**'); //可以用glob,看起来清爽一些
// 只要配置compass就好了,其他的插件内置配置都定义过了
fis.config.set('modules.parser.scss', 'compass');
fis.config.set('modules.parser.sass', 'compass');
// 通过unshift向已有规范前追加规则
fis.config.get('roadmap.path').unshift({
reg: 'public/lib/**' // 注意,glob字符串是从根目录开始匹配的
useOptimizer: false
}, {
reg: '**.html',
useOptimizer: false
});
// 这里配置这个意义不大,为什么不直接执行这个命令呢:
// rsd release -d ../server
fis.config.set('deploy.local.to', '../server'); |
@fouber |
在项目里使用 -o 参数,由于不支持项目的 html 模板,所以对 html 不使用优化。这样就导致 uglify 了 js 文件后,不会修改 html 中对 js 的引用,依旧引用以前的 js,没有引用 uglify 后改变了 MD5 的js。
The text was updated successfully, but these errors were encountered: