Сборка Workbox не генерирует сервисный работник - PullRequest
0 голосов
/ 04 декабря 2018

Я пытаюсь интегрировать workbox-build в мою систему сборки grunt для предварительного кэширования файлов.Я слежу за этой статьей - generateSW Mode

После ознакомления с приведенной выше документацией Google я определил функцию как

var workBox = require('workbox-build');

function swCache(){
    workBox.generateSW({
        swPath : path.join('target/app', 'sw_cache.js')
    })
    .then(function(details){
        console.log(details);
    })
}

Приведенный выше swPath является относительным путем к моему файлу grunt.Ниже я прилагаю код для выполнения задачи grunt вышеуказанной функции

grunt.task.registerTask('generateSWCache', function(){
        swCache();
    });

    if (env === 'production') {
        build = preBuild.concat(productionBuild).concat('generateSWCache');
    } else {
        build = preBuild.concat(developmentBuild).concat('generateSWCache');
    }

Задача generateSWCache выполняется, но она не создает никаких sw_cache.js для предварительного кэширования файлов.Ниже приведен скриншот enter image description here

1 Ответ

0 голосов
/ 29 января 2019

generateSWCache является асинхронной задачей, поэтому вы должны использовать функцию Grunt this.async.

var workBox = require('workbox-build');

function swCache(done) {
    workBox.generateSW({
        swPath : path.join('target/app', 'sw_cache.js')
    })
    .then(function(details){
        console.log(details);
        done(true);
    })
    .catch(function (err) {
        console.log(err);
        done(false);
    });
}

grunt.task.registerTask('generateSWCache', function(){
    swCache(this.async());
});

if (env === 'production') {
    build = preBuild.concat(productionBuild).concat('generateSWCache');
} else {
    build = preBuild.concat(developmentBuild).concat('generateSWCache');
}
...