1

gulp を使用して既存のプロジェクトに webpack と offline-plugin を追加しようとしています - 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 であり、プラグインのメイン キャッシュ オブジェクトに追加したファイルのいずれでもないことを示します。

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
 };

私がoffline-pluginを使用している方法は正しいです。他のファイルをキャッシュしてサービスワーカーから提供する方法を追加する方法です.webpack confing autmatclicyをスローするには、どのconfingを追加する必要がありますか

私のプロジェクトファイルツリー:

/_
  /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 
4

1 に答える 1