My puppeteer scripts now use deno. No
more need for npm in my personal stack! spawnSync
+
which
returns the local browser’s path.
import puppeteer from "https://deno.land/x/puppeteer@14.1.1/mod.ts";
const chrome = "firefox"; /* Browser Chrome: "firefox" | "chromium" | "google-chrome" | ... */
const product = "firefox"; /* Product Base: "firefox" | "chrome" */
const { status, stdout, stderr } = Deno.spawnSync("which", {
args: [ chrome, ],
});
const executablePath = new TextDecoder().decode(stdout).trim();
const browser = await puppeteer.launch({
headless: false,
executablePath: executablePath,
product: product,
});
const page = await browser.newPage();
await page.setViewport({ width: 1024, height: 768, });
const sites = [ "example.com", ];
for (const site of sites) {
await page.goto("http://" + site);
await page.screenshot({ path: site + ".png" });
}
await browser.close();
deno run --allow-all --unstable main.ts
Web servers can be spun up quickly on the command line but with gotchas. Take the innocent web server .
php -S 127.0.0.1:8080
Best not to use PHP
’s web server cli
(even for PHP) because routes with a
dot (.) are assumed to be
static files. Use a real web server
or superior cli
web servers with minor gotchas.
python -m http.server --bind 127.0.0.1 8080
busybox httpd -f -p 127.0.0.1:8080
ruby -run -e httpd . -p 8080
Hugo has
template performance metrics
with the --templateMetrics
flag. Here’s a snippet of the metrics for this
site.
$ hugo --templateMetrics
Start building sites …
hugo v0.101.0+extended linux/amd64 BuildDate=unknown
Template Metrics:
cumulative average maximum
duration duration duration count template
---------- -------- -------- ----- --------
7.278303484s 49.177726ms 237.175705ms 148 partials/generate-feeds.html
7.22797312s 112.93708ms 246.988674ms 64 _default/single.html
6.982028147s 83.119382ms 245.262274ms 84 partials/navigator-right.html
6.683942678s 47.070018ms 237.223569ms 142 partials/web-ring.html
1.685089741s 5.561352ms 28.254398ms 303 _default/summary.html
One way to remove multi–page transition jank is to force a permanent scrollbar.
Are there any kindred spirits? Yes — there’s
a kindred spirit. Overflows
may disable descending position: sticky
behavior. Avoid that problem with
other
jank removal techniques.
html {
overflow-y: scroll;
}
body {
overflow-y: scroll;
}
Whenever I’m handcrafting , content selection rules are usually the first declarations on my sheet. Might as well ensure user selected text is readable. Easiest win for accessibility.
::selection {
color: #fff;
background-color: #000;
}
::-webkit-selection {
color: #fff;
background-color: #000;
}
::-moz-selection {
color: #fff;
background-color: #000;
}