我试图通过gruntjs为penthouse提取几页的关键css。我猜错了,因为我的调试消息在任何实际执行任务之前都会打印整个页面数组。这导致始终使用相同的配置生成相同的文件。
grunt.registerTask('critical-css',function() {
grunt.log.writeln( 'Extracting critical css for initial view' );
var pages = grunt.config('cfg.criticalCss.pages'),
viewports = grunt.config('cfg.criticalCss.viewports');
for (var i = pages.length - 1; i >= 0; i--) {
grunt.log.writeln( 'Processing: ' + pages[i].name );
for (var a = viewports.length - 1; a >= 0; a--) {
grunt.config.set( 'ph.server', grunt.config('cfg.criticalCss.server') );
grunt.config.set( 'ph.urlToAnalyse', pages[i].url );
grunt.config.set( 'ph.inFile', pages[i].in );
grunt.config.set( 'ph.outFile', pages[i].out + '-' + viewports[a].name + '.css' );
grunt.config.set( 'ph.width', viewports[a].width );
grunt.config.set( 'ph.height', viewports[a].height );
// run the penthouse task with custom config
grunt.task.run( 'penthouse' );
}
}
});
答案 0 :(得分:0)
尝试在for循环中更改var声明以使
您可以使用let关键字在for循环范围内本地绑定变量。 - https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/let#let-scoped_variables_in_for_loops
for (let i = pages.length - 1; i >= 0; i--) {
grunt.log.writeln( 'Processing: ' + pages[i].name );
for (let a = viewports.length - 1; a >= 0; a--) {
grunt.config.set( 'ph.server', grunt.config('cfg.criticalCss.server') );
grunt.config.set( 'ph.urlToAnalyse', pages[i].url );
grunt.config.set( 'ph.inFile', pages[i].in );
grunt.config.set( 'ph.outFile', pages[i].out + '-' + viewports[a].name + '.css' );
grunt.config.set( 'ph.width', viewports[a].width );
grunt.config.set( 'ph.height', viewports[a].height );
// run the penthouse task with custom config
grunt.task.run( 'penthouse' );
}
}