Сборка Workbox не генерирует сервис-воркер

Я пытаюсь интегрировать 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.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 для предварительного кэширования файлов. Ниже приведен снимок экрана  введите описание изображения здесь


person Vikram Prasad    schedule 04.12.2018    source источник


Ответы (1)


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');
}
person abadalyan    schedule 29.01.2019