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 util = require("./util")
|
||||
const Hints = require("./hints")
|
||||
|
||||
const actions = {}
|
||||
|
||||
|
@ -55,8 +54,12 @@ actions.showWayback = ({ href = util.getCurrentLocation("href") } = {}) => () =>
|
|||
|
||||
// Surfingkeys-specific actions
|
||||
// ----------------------------
|
||||
actions.createHint = (selector, action = Hints.dispatchMouseClick) => () => Hints
|
||||
.create(selector, action)
|
||||
actions.createHint = (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 })()
|
||||
|
||||
|
|
24
gulpfile.js
24
gulpfile.js
|
@ -13,10 +13,22 @@ const fetch = require("node-fetch")
|
|||
const { spawn } = require("child_process")
|
||||
const { URL } = require("url")
|
||||
|
||||
const compl = require("./completions")
|
||||
const conf = require("./conf")
|
||||
const keys = require("./keys")
|
||||
const util = require("./util")
|
||||
let srcFilesLoaded = false
|
||||
let compl
|
||||
let conf
|
||||
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 = {
|
||||
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 () => {
|
||||
requireSrcFiles()
|
||||
|
||||
const screens = {}
|
||||
let screenshotList = ""
|
||||
|
||||
|
@ -190,6 +204,8 @@ const getFavicon = async ({ domain, favicon }, timeout = 5000) => {
|
|||
}
|
||||
|
||||
gulp.task("favicons", series("clean-favicons", async () => {
|
||||
requireSrcFiles()
|
||||
|
||||
const sites = [].concat(
|
||||
// search engine completions
|
||||
Object.entries(compl)
|
||||
|
|
Loading…
Reference in New Issue