fix(gulp): minimize issues w/referencing SK code
Because all source files are required by the gulpfile during the build stage in order to auto-generate documentation, code cannot exist at the top execution level which assumes that SurfingKeys- or browser-related code is defined. Two steps were taken to minimize the issues caused by this: 1. The source files are now only included during documentation generation, and not during normal builds. 2. Any occurrences of references to SK-specific code have been removed from the top level of the source files. There still remains the issue of selectively accessing SK code from the top level of source files, e.g. as a user wishes to do in #14, but as long as the ability to generate documentation is not desired, this should be a lesser issue. The workaround remains to wrap SK-dependent code in a block which is only executed in a real browser and not gulp. [TODO: Perhaps there is a simple way to detect this, and/or we can provide a helper function for doing so] The Hints.js stub file is no longer necessary after this change, and so it has been removed.
This commit is contained in:
parent
372e37ffae
commit
8f6e2d5f0c
|
@ -1,7 +1,6 @@
|
||||||
const ghReservedNames = require("github-reserved-names")
|
const ghReservedNames = require("github-reserved-names")
|
||||||
|
|
||||||
const util = require("./util")
|
const util = require("./util")
|
||||||
const Hints = require("./hints")
|
|
||||||
|
|
||||||
const actions = {}
|
const actions = {}
|
||||||
|
|
||||||
|
@ -55,8 +54,12 @@ actions.showWayback = ({ href = util.getCurrentLocation("href") } = {}) => () =>
|
||||||
|
|
||||||
// Surfingkeys-specific actions
|
// Surfingkeys-specific actions
|
||||||
// ----------------------------
|
// ----------------------------
|
||||||
actions.createHint = (selector, action = Hints.dispatchMouseClick) => () => Hints
|
actions.createHint = (selector, action) => () => {
|
||||||
.create(selector, action)
|
if (typeof action === "undefined") {
|
||||||
|
action = Hints.dispatchMouseClick // eslint-disable-line no-param-reassign
|
||||||
|
}
|
||||||
|
Hints.create(selector, action)
|
||||||
|
}
|
||||||
|
|
||||||
actions.openAnchor = ({ newTab = false, prop = "href" } = {}) => a => actions.openLink(a[prop], { newTab })()
|
actions.openAnchor = ({ newTab = false, prop = "href" } = {}) => a => actions.openLink(a[prop], { newTab })()
|
||||||
|
|
||||||
|
|
24
gulpfile.js
24
gulpfile.js
|
@ -13,10 +13,22 @@ const fetch = require("node-fetch")
|
||||||
const { spawn } = require("child_process")
|
const { spawn } = require("child_process")
|
||||||
const { URL } = require("url")
|
const { URL } = require("url")
|
||||||
|
|
||||||
const compl = require("./completions")
|
let srcFilesLoaded = false
|
||||||
const conf = require("./conf")
|
let compl
|
||||||
const keys = require("./keys")
|
let conf
|
||||||
const util = require("./util")
|
let keys
|
||||||
|
let util
|
||||||
|
|
||||||
|
const requireSrcFiles = () => {
|
||||||
|
if (srcFilesLoaded) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
compl = require("./completions") // eslint-disable-line global-require
|
||||||
|
conf = require("./conf") // eslint-disable-line global-require
|
||||||
|
keys = require("./keys") // eslint-disable-line global-require
|
||||||
|
util = require("./util") // eslint-disable-line global-require
|
||||||
|
srcFilesLoaded = true
|
||||||
|
}
|
||||||
|
|
||||||
const paths = {
|
const paths = {
|
||||||
scripts: ["conf.priv.js", "completions.js", "conf.js", "actions.js", "help.js", "keys.js", "util.js"],
|
scripts: ["conf.priv.js", "completions.js", "conf.js", "actions.js", "help.js", "keys.js", "util.js"],
|
||||||
|
@ -73,6 +85,8 @@ gulp.task("lint-gulpfile", () => gulp
|
||||||
// })
|
// })
|
||||||
|
|
||||||
gulp.task("docs", parallel(async () => {
|
gulp.task("docs", parallel(async () => {
|
||||||
|
requireSrcFiles()
|
||||||
|
|
||||||
const screens = {}
|
const screens = {}
|
||||||
let screenshotList = ""
|
let screenshotList = ""
|
||||||
|
|
||||||
|
@ -190,6 +204,8 @@ const getFavicon = async ({ domain, favicon }, timeout = 5000) => {
|
||||||
}
|
}
|
||||||
|
|
||||||
gulp.task("favicons", series("clean-favicons", async () => {
|
gulp.task("favicons", series("clean-favicons", async () => {
|
||||||
|
requireSrcFiles()
|
||||||
|
|
||||||
const sites = [].concat(
|
const sites = [].concat(
|
||||||
// search engine completions
|
// search engine completions
|
||||||
Object.entries(compl)
|
Object.entries(compl)
|
||||||
|
|
Loading…
Reference in New Issue