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