filerev: {
dist: {
src: ['<%= yeoman.dist %>/js/**/*.js']
},
img:{
src: ['<%= yeoman.dist %>/images/**/*.png']
}
}
usemin: {
js:['<%= yeoman.dist %>/js/{,*/}*.js'],
options: {
assetsDirs: ['<%= yeoman.dist %>/js','<%= yeoman.dist %>/images'],
patterns:{
js:[/(bell\.png)/,'replace img']
}
}
}
grunt.registerTask('defaultImg', [
'clean:dist',
'copy',
'filerev',
'usemin'
])
我的要求:更换js中的图片引用为加了md5形式的格式;
遇到问题:Warning: filterIn is not a function ;
usemin自带事例:;
生成的dist结构目录:;
有懂的大神帮忙解释下filter-in和filter-out的那个解释和如何使用。
谢谢!
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
根据你的描述,你正在使用Grunt(一个流行的JavaScript任务运行器)来自动化构建流程,具体涉及到文件重命名(通过filerev
插件给文件名添加MD5哈希以利于缓存控制)和替换HTML或JS中引用的这些文件路径(通过usemin
插件)。你遇到了一个错误提示“Warning: filterIn is not a function”,这通常意味着usemin
配置中引用了一个不存在或已废弃的方法。
在较旧版本的usemin
或其他Grunt插件中,可能存在filterIn
或filterOut
这样的概念,用于指定哪些文件应该被包含或排除在特定处理流程之外。然而,根据usemin
的最新文档,这些术语可能不再直接使用,或者已经被更现代的API所替代。
检查usemin
版本:确保你使用的usemin
版本是最新的,或者至少是一个与你的Grunt版本兼容且维护良好的版本。旧版本的API变更可能导致某些功能不可用或名称改变。
配置更新:根据usemin
的官方文档,配置中的patterns
部分是用来定义如何处理特定类型的文件(如JS、CSS)中的引用的。你的配置中已经尝试定义了一个处理图片引用的模式,但可能因为API使用不当导致了错误。正确的配置示例如下:
usemin: {
js: ['dist/js/{,*/}*.js'], // 确保路径正确指向经过filerev处理后的文件
css: ['dist/css/{,*/}*.css'], // 如果有CSS文件也需处理
options: {
assetsDirs: ['dist/js', 'dist/images'], // 指定资源目录
patterns: {
js: [
[/(bell\.png)/g, 'dist/images/$1'] // 正确的替换模式,这里假设图片最终位于dist/images且已重命名
]
}
}
}
理解filterIn
/filterOut
替代方案:如果usemin
的某些旧文档提到了filterIn
或filterOut
,那么在新版本中,你可能需要通过更精确的配置模式、正则表达式或者直接在任务配置中指定包含/排除规则来实现相同目的。
查看错误日志和文档:详细阅读Grunt和usemin
的错误日志,通常会提供更具体的错误信息。同时,查阅最新的官方文档,了解最新的配置方式和最佳实践。
社区和论坛:如果问题依然存在,考虑在Stack Overflow、GitHub的项目Issue页面或相关的开发者论坛提问,附上你的完整Gruntfile.js配置和详细的错误信息,这样能更快获得帮助。
希望这些建议能帮助你解决问题!