Javascript 自定义grunt Modernizer,带有非核心检测
从我发现的那天起,我就把它用于我所有的前端项目 它包括grunt Modernizer,至少我认为它可以下载库并在调用构建任务时动态编译Javascript 自定义grunt Modernizer,带有非核心检测,javascript,gruntjs,modernizr,getusermedia,Javascript,Gruntjs,Modernizr,Getusermedia,从我发现的那天起,我就把它用于我所有的前端项目 它包括grunt Modernizer,至少我认为它可以下载库并在调用构建任务时动态编译 grunt build 但我有一个小问题:默认情况下,它不包括我们可以在这里在线看到的“非核心检测”: 这是我的grunt Modernizer任务配置(Gruntfile.js文件的一部分): 你可以,看看他的答案 本质上 使用matchCommunityTests配置标志让grunt现代化 在代码中查找对非核心测试的引用,或命名它们 在测试配置中显式地
grunt build
但我有一个小问题:默认情况下,它不包括我们可以在这里在线看到的“非核心检测”:
这是我的grunt Modernizer任务配置(Gruntfile.js文件的一部分):
你可以,看看他的答案
本质上
使用matchCommunityTests配置标志让grunt现代化
在代码中查找对非核心测试的引用,或命名它们
在测试配置中显式地
在提出这个问题时,grunt Modernizer的最新版本应该是0.4.1。假设OP使用的是最新版本: 在版本0.4.1中添加社区测试 显示了两个(可选)感兴趣的选项:
测试
(数组)
定义要隐式包含的任何测试。测试名称是小写的,用下划线分隔(如果需要)。查看完整的测试选项集
以及:
匹配社区测试
(布尔值)
当parseFiles
=true
时,将此布尔值设置为true将尝试匹配用户参与的测试。查看完整的社区测试集
您会注意到,可以添加到tests
数组中的可用测试列表包括核心测试和社区测试。因此,如果您想显式地包含特定的社区测试,可以在测试
数组选项中枚举它们。例如:
// This would be in a larger config file
tests: ["a_download", "css_remunit"]
但是如果您将parseFiles
设置为true,并且希望grunt modernizer
检测您的任何社区测试,则可以将matchCommunityTests
设置为true
grunt modernizer
的发布配置不包含这两个选项,如果OP想要使用modernizer.getusermedia
,他们可以简单地将测试
数组设置为包含“getusermedia”
:
其中,将测试设置为包含'getusermedia'
的数组将始终包含社区getusermedia
测试
自动检测社区测试
(见、和。)
自动检测社区测试是有缺陷的。似乎无论matchCommunityTests
设置为什么,false
或true
,现有的社区测试都将被下载并包含在自定义版本中。例如,此基本任务配置:
modernizr: {
dist: {
devFile: 'vendor/modernizr/modernizr.js',
outputFile: 'js/modernizr.custom.js',
uglify: false,
files: {
src: ['js/src/**/*.js']
}
}
}
这个简单的JS文件:
;(function (
window,
document,
Modernizr
) {
if (Modernizr.touch) {}
if (Modernizr.cookies && Modernizr.cors && Modernizr.gamepad) {}
}(
window,
window.document
Modernizr
));
结果是:。我不知道这个属性,谢谢!但是我还有一个错误,我已经用这个问题更新了我的主题!除非手动编辑modernizr文件,否则应该使用grunt modernizr github问题跟踪器打开一个bug
modernizr: {
devFile: '<%= yeoman.app %>/components/modernizr/modernizr.js',
outputFile: '<%= yeoman.dist %>/components/modernizr/modernizr.js',
extra: {
'shiv' : true,
'printshiv' : false,
'load' : true,
'mq' : false,
'cssclasses' : true
},
extensibility: {
'addtest': true,
'prefixed': false,
'teststyles': false,
'testprops': false,
'testallprops': false,
'hasevents': false,
'prefixes': false,
'domprefixes': false
},
files: [
'<%= yeoman.dist %>/scripts/{,*/}*.js',
'<%= yeoman.dist %>/styles/{,*/}*.css',
'!<%= yeoman.dist %>/scripts/vendor/*'
],
uglify: true,
// Explicitly include the `getusermedia` test
tests: ['getusermedia']
}
modernizr: {
dist: {
devFile: '<%= yeoman.app %>/components/modernizr/modernizr.js',
outputFile: '<%= yeoman.dist %>/components/modernizr/modernizr.js',
extra: {
'shiv' : true,
'printshiv' : false,
'load' : true,
'mq' : false,
'cssclasses' : true
},
extensibility: {
'addtest': true,
'prefixed': false,
'teststyles': false,
'testprops': false,
'testallprops': false,
'hasevents': false,
'prefixes': false,
'domprefixes': false
},
uglify: true,
tests: ['getusermedia']
}
}
modernizr: {
dist: {
devFile: 'vendor/modernizr/modernizr.js',
outputFile: 'js/modernizr.custom.js',
uglify: false,
files: {
src: ['js/src/**/*.js']
}
}
}
;(function (
window,
document,
Modernizr
) {
if (Modernizr.touch) {}
if (Modernizr.cookies && Modernizr.cors && Modernizr.gamepad) {}
}(
window,
window.document
Modernizr
));