This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
var now = new Date(); // Date object | |
now.toDateString() // "Sun Jul 17 2016" | |
now.toLocaleDateString() // "2016/7/17" | |
now.toGMTString() // "Sun, 17 Jul 2016 03:16:49 GMT" | |
now.toISOString() // "2016-07-17T03:16:49.141Z" | |
now.toUTCString() // "Sun, 17 Jul 2016 03:16:49 GMT" | |
now.toLocaleTimeString() // "上午11:16:49" | |
now.toLocaleString() // "2016/7/17 上午11:16:49" | |
now.toString() // "Sun Jul 17 2016 11:16:49 GMT+0800 (台北標準時間)" | |
now.toTimeString() // "11:16:49 GMT+0800 (台北標準時間)" |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
async function directoryToObject(dir, walkOpts){ | |
const obj = {}; | |
for await(const file of walk(dir, walkOpts)){ | |
const path = relative(dir, file.path); | |
const split = path.split("/"); | |
let currObj = obj; | |
for(let i = 0; i < split.length; i++){ | |
const part = split[i]; |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
class Glob { | |
constructor(glob) { | |
this.glob = glob; | |
// We implement glob matching using RegExp internally. | |
// ? matches any one character except /, and * matches zero or more | |
// of those characters. We use capturing groups around each. | |
let regexpText = glob.replace("?", "([^/])").replace("*", "([^/]*)"); | |
// We use the u flag to get Unicode-aware matching. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/env node | |
var fs = require('fs'), | |
util = require('util'); | |
// Rattern to format the message with the issue ID | |
var MESSAGE_FORMAT = '[%s] %s'; | |
// Git commit messages are stored in a file, passed as argument to the script | |
// First and second arguments will be 'node' and the name of the script | |
var commitFile = process.argv[2]; |
See how a minor change to your commit message style can make a difference. Examples
Have a look at CLI util git-conventional-commits to ensure this conventions and generate changelogs
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash | |
RED="\e[41m" | |
GREEN="\e[42m" | |
BLUE="\e[44m" | |
CYAN="\e[36m" | |
MAGENTA="\e[45m" | |
ENDCOLOR="\e[0m" | |
### |
There are countless guides online for setting up a TypeScript monorepo.
Most rely on external tools like Lerna, Yarn, Turborepo, Yalc, or something else.
Here's a simple, zero-opinion way to get a monorepo going.
First, make a structure like this:
root/
So, in summary, we have:
packages/
app/
tsconfig.json
shared/
tsconfig.json
tsconfig.base.json
tsconfig.json
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import { merge } from "lume/core/utils.ts"; | |
import type { Page, Site } from "lume/core.ts"; | |
export interface Options { | |
/** The list extensions this plugin applies to */ | |
extensions: string[]; | |
/** The words per minute a reader can read (default: 275) */ | |
wordsPerMinute: number; |