Skip to content

Commit b164147

Browse files
ascorbicwardpeetLaurie Barth
authored
feat(gatsby-core-utils): Add node.js export, and move site-metadata into its own function (#26237)
* Move site-metadata into its own helper, and export node stuff * Moving everthing to index * fix tests * fix packages for real * add Peter's nit and trigger re-run Co-authored-by: Ward Peeters <ward@coding-tech.com> Co-authored-by: Laurie Barth <laurie@LauriesrkLaptop.fios-router.home>
1 parent 90e66c7 commit b164147

File tree

13 files changed

+66
-35
lines changed

13 files changed

+66
-35
lines changed

packages/gatsby-cli/src/init-starter.ts

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ import isValid from "is-valid-path"
99
import sysPath from "path"
1010
import prompts from "prompts"
1111
import url from "url"
12-
import { createServiceLock } from "gatsby-core-utils/dist/service-lock"
12+
import { updateSiteMetadata } from "gatsby-core-utils"
1313
import report from "./reporter"
1414
import { getPackageManager, promptPackageManager } from "./util/package-manager"
1515
import { isTTY } from "./util/is-tty"
@@ -358,11 +358,14 @@ export async function initStarter(
358358
)
359359
})
360360

361-
await createServiceLock(sitePath, `metadata`, {
362-
name: sitePackageJson?.name || rootPath,
363-
sitePath,
364-
lastRun: Date.now(),
365-
}).then(unlock => unlock?.())
361+
await updateSiteMetadata(
362+
{
363+
name: sitePackageJson?.name || rootPath,
364+
sitePath,
365+
lastRun: Date.now(),
366+
},
367+
false
368+
)
366369

367370
successMessage(rootPath)
368371
trackCli(`NEW_PROJECT_END`)

packages/gatsby-core-utils/package.json

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
"homepage": "https://github.com/gatsbyjs/gatsby/tree/master/packages/gatsby-core-utils#readme",
1111
"license": "MIT",
1212
"main": "dist/index.js",
13+
"types": "dist/index.d.ts",
1314
"repository": {
1415
"type": "git",
1516
"url": "https://github.com/gatsbyjs/gatsby.git",
@@ -34,6 +35,7 @@
3435
"fs-extra": "^8.1.0",
3536
"node-object-hash": "^2.0.0",
3637
"proper-lockfile": "^4.1.1",
38+
"tmp": "^0.2.1",
3739
"xdg-basedir": "^4.0.0"
3840
},
3941
"devDependencies": {

packages/gatsby-core-utils/src/index.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,3 +6,5 @@ export { getCIName, isCI } from "./ci"
66
export { createRequireFromPath } from "./create-require-from-path"
77
export { getConfigStore } from "./get-config-store"
88
export { getGatsbyVersion } from "./get-gatsby-version"
9+
export * from "./service-lock"
10+
export * from "./site-metadata"
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
import { createServiceLock, getService } from "./service-lock"
2+
3+
export interface ISiteMetadata {
4+
sitePath: string
5+
name?: string
6+
pid?: number
7+
lastRun?: number
8+
}
9+
10+
export async function getSiteMetadata(
11+
sitePath: string
12+
): Promise<ISiteMetadata | null> {
13+
return getService(sitePath, `metadata`, true)
14+
}
15+
16+
export async function updateSiteMetadata(
17+
metadata: ISiteMetadata,
18+
merge = true
19+
): Promise<void> {
20+
if (merge) {
21+
const oldMetadata = await getSiteMetadata(metadata.sitePath)
22+
if (oldMetadata) {
23+
metadata = { ...oldMetadata, ...metadata }
24+
}
25+
}
26+
27+
return createServiceLock(
28+
metadata.sitePath,
29+
`metadata`,
30+
metadata
31+
).then(unlock => unlock?.())
32+
}
Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,10 @@
11
{
22
"extends": "../../tsconfig.json",
3-
"exclude": ["node_modules", "src/__tests__", "src/__mocks__", "dist"]
3+
"exclude": [
4+
"node_modules",
5+
"src/__tests__",
6+
"src/__mocks__",
7+
"dist",
8+
"./node.d.ts"
9+
]
410
}

packages/gatsby-plugin-manifest/src/__tests__/gatsby-node.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
jest.mock(`fs`, () => {
22
return {
3+
...jest.requireActual(`fs`),
34
existsSync: jest.fn().mockImplementation(() => true),
45
writeFileSync: jest.fn(),
56
mkdirSync: jest.fn(),

packages/gatsby-plugin-manifest/src/__tests__/gatsby-ssr.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
jest.mock(`fs`, () => {
22
return {
3+
...jest.requireActual(`fs`),
34
readFileSync: jest.fn().mockImplementation(() => `someIconImage`),
45
}
56
})

packages/gatsby-recipes/src/graphql-server/index.js

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,7 @@ const execa = require(`execa`)
22
const path = require(`path`)
33
const fs = require(`fs`)
44
const detectPort = require(`detect-port`)
5-
const {
6-
getService,
7-
createServiceLock,
8-
} = require(`gatsby-core-utils/dist/service-lock`)
5+
const { getService, createServiceLock } = require(`gatsby-core-utils`)
96

107
// NOTE(@mxstbr): The forceStart boolean enforces us to start the recipes graphql server
118
// even if another instance might already be running. This is necessary to ensure the gatsby

packages/gatsby-recipes/src/providers/gatsby/page.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
const Joi = require(`@hapi/joi`)
2-
const { getService } = require(`gatsby-core-utils/dist/service-lock`)
2+
const { getService } = require(`gatsby-core-utils`)
33
const fetch = require(`node-fetch`)
44

55
const { REQUIRES_KEYS } = require(`./utils/constants`)

packages/gatsby/src/commands/build.ts

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ import {
3636
markWebpackStatusAsPending,
3737
markWebpackStatusAsDone,
3838
} from "../utils/webpack-status"
39-
import { createServiceLock } from "gatsby-core-utils/dist/service-lock"
39+
import { updateSiteMetadata } from "gatsby-core-utils"
4040

4141
let cachedPageData
4242
let cachedWebpackCompilationHash
@@ -64,11 +64,12 @@ module.exports = async function build(program: IBuildArgs): Promise<void> {
6464
)
6565
}
6666

67-
await createServiceLock(program.directory, `metadata`, {
67+
await updateSiteMetadata({
6868
name: program.sitePackageJson.name,
6969
sitePath: program.directory,
7070
lastRun: Date.now(),
71-
}).then(unlock => unlock?.())
71+
pid: process.pid,
72+
})
7273

7374
markWebpackStatusAsPending()
7475

packages/gatsby/src/commands/develop.ts

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,9 @@ import { isCI, slash } from "gatsby-core-utils"
1212
import {
1313
createServiceLock,
1414
getService,
15-
} from "gatsby-core-utils/dist/service-lock"
16-
import { UnlockFn } from "gatsby-core-utils/src/service-lock"
15+
updateSiteMetadata,
16+
UnlockFn,
17+
} from "gatsby-core-utils"
1718
import reporter from "gatsby-cli/lib/reporter"
1819
import { getSslCert } from "../utils/get-ssl-cert"
1920
import { startDevelopProxy } from "../utils/develop-proxy"
@@ -283,13 +284,12 @@ module.exports = async (program: IProgram): Promise<void> => {
283284
port: proxyPort,
284285
}
285286
)
286-
// We don't need to keep a lock on this, as it's just site metadata
287-
await createServiceLock(program.directory, `metadata`, {
287+
await updateSiteMetadata({
288288
name: program.sitePackageJson.name,
289289
sitePath: program.directory,
290290
pid: process.pid,
291291
lastRun: Date.now(),
292-
}).then(unlock => unlock?.())
292+
})
293293

294294
if (!statusUnlock || !developUnlock) {
295295
const data = await getService(program.directory, `developproxy`)

packages/gatsby/src/utils/develop-proxy.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ import https from "https"
33
import httpProxy from "http-proxy"
44
import path from "path"
55
import fs from "fs-extra"
6-
import { getServices } from "gatsby-core-utils/dist/service-lock"
6+
import { getServices } from "gatsby-core-utils"
77
import st from "st"
88
import restartingScreen from "./restarting-screen"
99
import { IProgram } from "../commands/types"

yarn.lock

Lines changed: 0 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -6139,20 +6139,6 @@ boxen@^1.2.1:
61396139
term-size "^1.2.0"
61406140
widest-line "^2.0.0"
61416141

6142-
boxen@^3.0.0:
6143-
version "3.2.0"
6144-
resolved "https://registry.yarnpkg.com/boxen/-/boxen-3.2.0.tgz#fbdff0de93636ab4450886b6ff45b92d098f45eb"
6145-
integrity sha512-cU4J/+NodM3IHdSL2yN8bqYqnmlBTidDR4RC7nJs61ZmtGz8VZzM3HLQX0zY5mrSmPtR3xWwsq2jOUQqFZN8+A==
6146-
dependencies:
6147-
ansi-align "^3.0.0"
6148-
camelcase "^5.3.1"
6149-
chalk "^2.4.2"
6150-
cli-boxes "^2.2.0"
6151-
string-width "^3.0.0"
6152-
term-size "^1.2.0"
6153-
type-fest "^0.3.0"
6154-
widest-line "^2.0.0"
6155-
61566142
boxen@^4.2.0:
61576143
version "4.2.0"
61586144
resolved "https://registry.yarnpkg.com/boxen/-/boxen-4.2.0.tgz#e411b62357d6d6d36587c8ac3d5d974daa070e64"

0 commit comments

Comments
 (0)