Skip to content

Commit 5805947

Browse files
authored
build with esbuild; support Node 18+ (#963)
* build with esbuild * fix import attributes * semi-functional esbuild for mocha * process.env.npm_package_version * downgrade to Node16 * one more process.env.npm_package_version * getClientPath fixes * allow node 18+ * fix c8 * support observablehq.config.ts * glob + build.js * --sourcemap=linked * logLevel: info * logging * logging? * separate arguments? * log positionals? * log arguments * double quotes? * fix missing pathToFileURL * remove extra logging * prepublishOnly; shebang * format=esm; fix bin * Node 18+
1 parent f704c48 commit 5805947

33 files changed

+845
-915
lines changed

.github/workflows/test.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ jobs:
2121
node-version: ${{ matrix.version }}
2222
cache: yarn
2323
- run: yarn --frozen-lockfile
24-
- run: yarn c8 --check-coverage -x src/**/*.d.ts -x src/preview.ts -x src/observableApiConfig.ts -x src/client -x src/convert.ts --lines 80 --per-file yarn test:mocha
24+
- run: yarn test:coverage
2525
- run: yarn test:tsc
2626
- run: |
2727
echo ::add-matcher::.github/eslint.json

.gitignore

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,13 @@
1-
.env
2-
.DS_Store
31
**/.observablehq/cache/
4-
coverage/
5-
docs/themes.md
6-
docs/theme/*.md
7-
dist/
2+
.DS_Store
3+
.env
4+
/build.test/
5+
/build/
6+
/coverage/
7+
/dist/
8+
/docs/theme/*.md
9+
/docs/themes.md
10+
/test/output/**/*-changed.*
11+
/test/output/build/**/*-changed/
812
node_modules/
9-
test/output/**/*-changed.*
10-
test/output/build/**/*-changed/
1113
yarn-error.log

bin/observable-init.js

Lines changed: 0 additions & 15 deletions
This file was deleted.

build.js

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
import {parseArgs} from "node:util";
2+
import {build} from "esbuild";
3+
import {glob} from "glob";
4+
5+
const {values, positionals} = parseArgs({
6+
allowPositionals: true,
7+
options: {
8+
outdir: {type: "string", default: "build"},
9+
outbase: {type: "string"},
10+
ignore: {type: "string", multiple: true},
11+
sourcemap: {type: "boolean"}
12+
}
13+
});
14+
15+
await build({
16+
entryPoints: await glob(positionals, {ignore: values.ignore}),
17+
define: {"process.env.npm_package_version": `"${process.env.npm_package_version}"`},
18+
outdir: values.outdir,
19+
outbase: values.outbase,
20+
platform: "node",
21+
sourcemap: values.sourcemap ? "linked" : false,
22+
format: "esm",
23+
logLevel: "info"
24+
});

docs/getting-started.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,7 @@ These are just first steps. You can continue to develop projects after publishin
8484
Framework includes a helper script (`observable create`) for creating new projects. After a few quick prompts — where to create the project, your preferred package manager, *etc.* — it will stamp out a fresh project from a template.
8585

8686
<div class="tip">
87-
<p>Framework is a <a href="https://nodejs.org/">Node.js</a> application published to npm. You must have <a href="https://nodejs.org/en/download">Node.js 20.6 or later</a> installed before you can install Framework. Framework is a command-line interface (CLI) and runs in the terminal.</p>
87+
<p>Framework is a <a href="https://nodejs.org/">Node.js</a> application published to npm. You must have <a href="https://nodejs.org/en/download">Node.js 18 or later</a> installed before you can install Framework. Framework is a command-line interface (CLI) and runs in the terminal.</p>
8888
<p>If you run into difficulty following this tutorial, we’re happy to help! Please visit the <a href="https://talk.observablehq.com">Observable forum</a> or our <a href="https://github.com/observablehq/framework/discussions">GitHub discussions</a>.</p>
8989
</div>
9090

examples/api/package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,12 @@
33
"scripts": {
44
"dev": "observable preview",
55
"build": "rm -rf dist && observable build",
6-
"postinstall": "ln -sf ../../../../bin/observable-init.js node_modules/.bin/observable"
6+
"postinstall": "ln -sf ../../../../build/bin/observable.js node_modules/.bin/observable"
77
},
88
"dependencies": {
99
"@observablehq/framework": "link:../.."
1010
},
1111
"engines": {
12-
"node": ">=20.6"
12+
"node": ">=18"
1313
}
1414
}

examples/chess/package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
"scripts": {
44
"dev": "observable preview",
55
"build": "rm -rf dist && observable build",
6-
"postinstall": "ln -sf ../../../../bin/observable-init.js node_modules/.bin/observable"
6+
"postinstall": "ln -sf ../../../../build/bin/observable.js node_modules/.bin/observable"
77
},
88
"dependencies": {
99
"@observablehq/framework": "link:../..",
@@ -12,6 +12,6 @@
1212
"jszip": "^3.10.1"
1313
},
1414
"engines": {
15-
"node": ">=20.6"
15+
"node": ">=18"
1616
}
1717
}

examples/eia/package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
"scripts": {
44
"dev": "observable preview",
55
"build": "rm -rf dist && observable build",
6-
"postinstall": "ln -sf ../../../../bin/observable-init.js node_modules/.bin/observable"
6+
"postinstall": "ln -sf ../../../../build/bin/observable.js node_modules/.bin/observable"
77
},
88
"dependencies": {
99
"@observablehq/framework": "link:../..",
@@ -13,6 +13,6 @@
1313
"topojson-simplify": "^3.0.3"
1414
},
1515
"engines": {
16-
"node": ">=20.6"
16+
"node": ">=18"
1717
}
1818
}

examples/google-analytics/package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,15 +3,15 @@
33
"scripts": {
44
"dev": "observable preview",
55
"build": "rm -rf dist && observable build",
6-
"postinstall": "ln -sf ../../../../bin/observable-init.js node_modules/.bin/observable"
6+
"postinstall": "ln -sf ../../../../build/bin/observable.js node_modules/.bin/observable"
77
},
88
"dependencies": {
99
"@google-analytics/data": "^4.3.0",
1010
"@observablehq/framework": "link:../..",
1111
"dotenv": "^16.3.1"
1212
},
1313
"engines": {
14-
"node": ">=20.6"
14+
"node": ">=18"
1515
},
1616
"devDependencies": {
1717
"@types/node": "^20.10.6"

examples/hello-world/package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,12 @@
33
"scripts": {
44
"dev": "observable preview",
55
"build": "rm -rf dist && observable build",
6-
"postinstall": "ln -sf ../../../../bin/observable-init.js node_modules/.bin/observable"
6+
"postinstall": "ln -sf ../../../../build/bin/observable.js node_modules/.bin/observable"
77
},
88
"dependencies": {
99
"@observablehq/framework": "link:../.."
1010
},
1111
"engines": {
12-
"node": ">=20.6"
12+
"node": ">=18"
1313
}
1414
}

0 commit comments

Comments
 (0)