first commit
This commit is contained in:
148
build/node_modules/sw-precache/cli.js
generated
vendored
Executable file
148
build/node_modules/sw-precache/cli.js
generated
vendored
Executable file
@@ -0,0 +1,148 @@
|
||||
#!/usr/bin/env node
|
||||
/**
|
||||
* Copyright 2015 Google Inc. All rights reserved.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
/* eslint-env node */
|
||||
/* eslint no-nested-ternary: 0 */
|
||||
'use strict';
|
||||
|
||||
var meow = require('meow');
|
||||
var path = require('path');
|
||||
var pkg = require('./package.json');
|
||||
var swPrecache = require('./');
|
||||
var updateNotifier = require('update-notifier');
|
||||
|
||||
updateNotifier({pkg: pkg}).notify();
|
||||
|
||||
function setDefaults(cli, configFileFlags) {
|
||||
var compositeFlags = cli.flags;
|
||||
|
||||
compositeFlags.root = compositeFlags.root || configFileFlags.root || './';
|
||||
if (compositeFlags.root.lastIndexOf('/') !== compositeFlags.root.length - 1) {
|
||||
compositeFlags.root += '/';
|
||||
}
|
||||
|
||||
compositeFlags.stripPrefix = compositeFlags.stripPrefix ||
|
||||
configFileFlags.stripPrefix || compositeFlags.root;
|
||||
|
||||
compositeFlags.stripPrefixMulti = compositeFlags.stripPrefixMulti ||
|
||||
configFileFlags.stripPrefixMulti || {};
|
||||
|
||||
compositeFlags.swFile = compositeFlags.swFile || configFileFlags.swFile ||
|
||||
'service-worker.js';
|
||||
compositeFlags.swFilePath = compositeFlags.swFilePath ||
|
||||
configFileFlags.swFilePath ||
|
||||
path.join(compositeFlags.root, compositeFlags.swFile);
|
||||
|
||||
compositeFlags.cacheId = compositeFlags.cacheId ||
|
||||
configFileFlags.cacheId || cli.pkg.name;
|
||||
|
||||
compositeFlags.dynamicUrlToDependencies =
|
||||
compositeFlags.dynamicUrlToDependencies ||
|
||||
configFileFlags.dynamicUrlToDependencies;
|
||||
|
||||
compositeFlags.directoryIndex = compositeFlags.directoryIndex ||
|
||||
configFileFlags.directoryIndex;
|
||||
|
||||
compositeFlags.navigateFallback = compositeFlags.navigateFallback ||
|
||||
configFileFlags.navigateFallback;
|
||||
|
||||
compositeFlags.navigateFallbackWhitelist =
|
||||
compositeFlags.navigateFallbackWhitelist ||
|
||||
configFileFlags.navigateFallbackWhitelist;
|
||||
|
||||
compositeFlags.staticFileGlobs = compositeFlags.staticFileGlobs ||
|
||||
configFileFlags.staticFileGlobs;
|
||||
if (compositeFlags.staticFileGlobs) {
|
||||
if (typeof compositeFlags.staticFileGlobs === 'string') {
|
||||
compositeFlags.staticFileGlobs = [compositeFlags.staticFileGlobs];
|
||||
}
|
||||
} else {
|
||||
compositeFlags.staticFileGlobs = [compositeFlags.root + '/**/*.*'];
|
||||
}
|
||||
|
||||
compositeFlags.ignoreUrlParametersMatching =
|
||||
compositeFlags.ignoreUrlParametersMatching ||
|
||||
configFileFlags.ignoreUrlParametersMatching;
|
||||
if (compositeFlags.ignoreUrlParametersMatching &&
|
||||
typeof compositeFlags.ignoreUrlParametersMatching === 'string') {
|
||||
compositeFlags.ignoreUrlParametersMatching =
|
||||
compositeFlags.ignoreUrlParametersMatching.split(',').map(function(s) {
|
||||
return new RegExp(s);
|
||||
});
|
||||
}
|
||||
|
||||
compositeFlags.importScripts = compositeFlags.importScripts ||
|
||||
configFileFlags.importScripts;
|
||||
if (compositeFlags.importScripts &&
|
||||
typeof compositeFlags.importScripts === 'string') {
|
||||
compositeFlags.importScripts = compositeFlags.importScripts.split(',');
|
||||
}
|
||||
|
||||
compositeFlags.runtimeCaching = compositeFlags.runtimeCaching ||
|
||||
configFileFlags.runtimeCaching;
|
||||
|
||||
compositeFlags.templateFilePath = compositeFlags.templateFilePath ||
|
||||
configFileFlags.templateFilePath;
|
||||
|
||||
compositeFlags.maximumFileSizeToCacheInBytes =
|
||||
compositeFlags.maximumFileSizeToCacheInBytes ||
|
||||
configFileFlags.maximumFileSizeToCacheInBytes;
|
||||
|
||||
// We can't just use ||, since compositeFlags.skipWaiting might be false.
|
||||
compositeFlags.skipWaiting = ('skipWaiting' in compositeFlags) ?
|
||||
compositeFlags.skipWaiting :
|
||||
(('skipWaiting' in configFileFlags) ?
|
||||
configFileFlags.skipWaiting : undefined);
|
||||
|
||||
// We can't just use ||, since compositeFlags.clientsClaim might be false.
|
||||
compositeFlags.clientsClaim = ('clientsClaim' in compositeFlags) ?
|
||||
compositeFlags.clientsClaim :
|
||||
(('clientsClaim' in configFileFlags) ?
|
||||
configFileFlags.clientsClaim : undefined);
|
||||
|
||||
compositeFlags.dontCacheBustUrlsMatching =
|
||||
compositeFlags.dontCacheBustUrlsMatching ||
|
||||
configFileFlags.dontCacheBustUrlsMatching;
|
||||
|
||||
return compositeFlags;
|
||||
}
|
||||
|
||||
var cli = meow({
|
||||
help: 'Options from https://github.com/GoogleChrome/sw-precache#options ' +
|
||||
'are accepted as flags.\nAlternatively, use --config <file>, where ' +
|
||||
'<file> is the path to a JavaScript file that defines the same ' +
|
||||
'options via module.exports.\n' +
|
||||
'When both a config file and command line option is given, the ' +
|
||||
'command line option takes precedence.'
|
||||
});
|
||||
|
||||
// If the --config option is used, then read the options from an external
|
||||
// JSON configuration file. Options from the --config file can be overwritten
|
||||
// by any command line options.
|
||||
var configFileFlags = cli.flags.config ?
|
||||
require(path.resolve(cli.flags.config)) : {};
|
||||
var options = setDefaults(cli, configFileFlags);
|
||||
|
||||
swPrecache.write(options.swFilePath, options, function(error) {
|
||||
if (error) {
|
||||
console.error(error.stack);
|
||||
process.exit(1);
|
||||
}
|
||||
|
||||
console.log(options.swFilePath,
|
||||
'has been generated with the service worker contents.');
|
||||
});
|
||||
Reference in New Issue
Block a user