Z modernizr 3.0 (alfa), należy może generować niestandardowe kompilacje lokalnie. Może to rozwiązać wyżej wspomniany problem "przesady" - chociaż nie jestem do końca jasny w tej kwestii (ale zakładam, że jest to rozmiar). Nowe API dostarcza metodę "kompilacji", do której możesz przekazać json zawierający testy, które chciałbyś dołączyć do kompilacji.
Używam czegoś takiego w moim haszyszu, ale łyk nie jest potrzebny - wystarczy prosty skrypt węzła.
gulp.task('js:modernizr', function() {
var modConfig = JSON.parse(fs.readFileSync('modernizr-config.json', {
encoding: 'utf8'
}));
modernizr.build(modConfig, function(res) {
fs.writeFileSync('modernizr.js', res);
return true;
});
});
A przykładem 'modernizr-config.json' pliku byłoby
{
"classPrefix": "",
"options": [
"addTest",
"atRule",
"domPrefixes",
"hasEvent",
"html5shiv",
"html5printshiv",
"load",
"mq",
"prefixed",
"prefixes",
"prefixedCSS",
"setClasses",
"testAllProps",
"testProp",
"testStyles"
],
"feature-detects": [
"css/transforms",
"css/transforms3d",
"css/transformstylepreserve3d",
"css/transitions",
"touchevents",
"workers/webworkers",
"history"
]
}
Pełne plik konfiguracyjny jest zawarty w pakiecie modernizr.
Dzięki takiemu podejściu można skorzystać z dobrze utrzymanego pakietu testowego Moderniser za pomocą instalatorów pakietów i łatwo dodawać/usuwać testy w razie potrzeby. Mniej testów, oczywiście mniejszy plik.
Opcja „setClasses” doda powiązany klasę testową do HTML, ale można również skorzystać z 3,0 zdarzeń asynchronicznych tak:
Modernizr.on('csstransitions', function(bool) {
if (bool === true) // do transition stuffs
}
Nie chcę aby to biblioteka dla tego. – user1087110
Sprawdź ten wątek: http://stackoverflow.com/a/13081497/104380 – vsync