簡體   English   中英

Webpack離線插件如何向sw.js添加資產

[英]Webpack offline plugin how to add assets to sw.js

我正在嘗試將webpack和offline-plugin添加到現有項目中使用gulp - webpack工作得很好但是添加offline-plugin會給你帶來困難,

我做的是添加offline-plugin throw npm

webpack.confing.js

const {resolve} = require('path')
const webpackValidator = require('webpack-validator')
const OfflinePlugin = require('offline-plugin');

 module.exports = webpackValidator({
            context: resolve('app/scripts'),
            entry: ["./main.js","./skrollr.js"],
            output: {
                filename: "[name].[hash].js",
            },devtool: 'eval',
            module: {
                loaders :[
                        {test:/\.(jsx|js)$/,exclude: /node_modules/,loader: 'imports?jQuery=jquery,$=jquery,this=>window'},
                        { test: /\.css$/,exclude: /node_modules/, loader: "style-loader!css-loader" },
                        { test: /\.eot$/, loader: "file-loader" },
                        { test: /\.woff2$/, loader: "file-loader" },
                        { test: /\.woff$/, loader: "file-loader" },
                        { test: /\.svg$/, loader: "file-loader" },
                        { test: /\.ttf$/, loader: "file-loader" }]
                    },
            resolve: {
                        extensions: ['', '.js', '.jsx','.css','.eot','.woff2','.woff','.svg','.ttf']
                    },

                plugins: [new OfflinePlugin({
                    caches:{"main":['images/bgz.jpg','app/images/hamburger.svg','app/images/logo_grey.svg']},
                    externals:['images/bgz.jpg','app/images/hamburger.svg','app/images/logo_grey.svg'],ServiceWorker:{output:'/sw.js'}})]
});

main.js是項目的主文件

var skrollr = require('./skrollr.js');
require('../styles/main.css');

 (function () {
   'use strict';
    $("#skrollr-body").css("background","green");

     require('../../node_modules/offline-plugin/runtime').install();
     if ('serviceWorker' in navigator) {
         navigator.serviceWorker.register('/sw.js', {scope:           './'}).then(function(registration) {

     document.querySelector('#status').textContent = 'succeeded';


        }).catch(function(error) {

          document.querySelector('#status').textContent = error;
       });
         } else {
           // The current browser doesn't support service workers.
              var aElement = document.createElement('a');
                aElement.href = 'http://www.chromium.org/blink/serviceworker/service-worker-faq';
            aElement.textContent = 'unavailable';
             document.querySelector('#status').appendChild(aElement);
          }

現在,當我運行該項目時,我使用:

node_modules/.bin/webpack

它回來了

hash: 496a6f3a79110e844236
Version: webpack 1.13.2
Time: 3167ms
                   Asset       Size  Chunks             Chunk Names
main.496a6f3a79110e844236.js    1.01 MB       0  [emitted]  main
                   sw.js    14.4 kB          [emitted]  
appcache/manifest.appcache  134 bytes          [emitted]  
appcache/manifest.html   58 bytes          [emitted]  
 [0] multi main 40 bytes {0} [built]
  + 8 hidden modules
  Child __offline_serviceworker:
    + 3 hidden modules

然后我運行gulp服務器:

gulp serve

我檢查sw.js返回並顯示只有bundle.js提供的文件不是我添加到插件主要cahches對象的任何文件:

var __wpo = {
"assets": {
 "main": [
   "../.././scripts/bundle.js"
   ],
  "additional": [],
   "optional": []
 },
"hashesMap": {
 "f250efd8234ae0d9bbb5e1db4a4ce8bf": "../.././scripts/bundle.js"
 },
 "strategy": "all",
 "version": "9/6/2016, 6:40:24 PM",
 "name": "webpack-offline",
 "relativePaths": true
 };

所以我使用離線插件的方式是當前的,以及如何添加其他文件來緩存和服務形式的服務工作者,我應該添加什么樣的混亂去做webpack confing autmatclicy

我的項目文件樹:

/_
  /app
      /index.html
      /images
          /bgz.jpg
          /hamburger.svg
          /logo_grey.svg
      /fonts
      /scripts
         /main.js
         /bundel.js 

  /node_moudles
  sw.js
  packge.json
  webpack.config.js 

我用過這個:

new OfflinePlugin({
  version: '[hash]',
  responseStrategy: 'network-first',
  safeToUseOptionalCaches: true,
  ServiceWorker: {
    events: true,
    output: 'static/js/sw.js'
  }
})

它似乎包括所有資產。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM