自定义grunt-modernizr与非核心检测

Flo*_*ild 7 javascript modernizr gruntjs getusermedia

由于一天,我发现了自耕农,我用它为我所有前端项目.

它包括grunt-modernizr - 至少我认为 - 下载库并在我调用构建任务时动态编译它

grunt build
Run Code Online (Sandbox Code Playgroud)

但我有一个小问题:默认情况下,它不包括我们在网上可以看到的"非核心检测":modernizr custom builder

这是我的grunt-modernizr任务配置(Gruntfile.js文件的一部分):

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
}
Run Code Online (Sandbox Code Playgroud)

实际上我想使用Modernizr.getusermedia,但作为非核心功能,它没有定义...因为grunt-modernizr配置似乎不允许非核心检测到包含.关于这一点的任何想法?

编辑:现代化任务不再起作用; 即使我删除了"额外"和"可扩展性"属性......

Running "modernizr" task

Enabled Extras
>> shiv
>> load
>> cssclasses

Looking for Modernizr references

in dist/styles/main.min.css
>> svg
>> input

Downloading source files
cache modernizr-latest.js
cache modernizr.load.1.5.4.js

>> Generating a custom Modernizr build
Fatal error: Invalid regular expression: /TEST__flexbox']=function(){return testPropsAll('flexWrap');};tests['flexboxlegacy__/: Unterminated character class
Run Code Online (Sandbox Code Playgroud)

Pat*_*ick 3

你可以在这里查看Stu Cox的回答

本质上,

使用 matchCommunityTests 配置标志让 grunt-modernizr 在代码中查找对非核心测试的引用,或者在测试配置中显式命名它们