Skip to content

Commit da663f3

Browse files
authored
Merge pull request #1007 from 06kellyjac/fix-ts
ci: generate js and definitions from ts and place in original location
2 parents f7932be + 8810a63 commit da663f3

File tree

9 files changed

+78
-8
lines changed

9 files changed

+78
-8
lines changed

.github/workflows/ci.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -60,8 +60,8 @@ jobs:
6060
# if: ${{ steps.test.outputs.exit_code }} != 0
6161
# run: exit ${{ steps.test.outputs.exit_code }}
6262

63-
- name: Build application
64-
run: npm run build
63+
- name: Build frontend
64+
run: npm run build-ui
6565

6666
- name: Save build folder
6767
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4

.github/workflows/npm.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,8 @@ jobs:
2222
registry-url: 'https://registry.npmjs.org'
2323
- run: npm ci
2424
- run: npm run build
25+
env:
26+
IS_PUBLISHING: 'YES'
2527
- run: npm publish --access=public
2628
env:
2729
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}

.npmignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
11
# This file required to override .gitignore when publishing to npm
22
website/
33
plugins/
4+
experimental/
5+
cypress/

package.json

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,11 @@
88
"clientinstall": "npm install --prefix client",
99
"server": "tsx index.ts",
1010
"start": "concurrently \"npm run server\" \"npm run client\"",
11-
"build": "vite build",
12-
"build-ts": "tsc",
11+
"build": "npm run build-ui && npm run build-lib",
12+
"build-ui": "vite build",
13+
"build-lib": "./scripts/build-for-publish.sh",
14+
"restore-lib": "./scripts/undo-build.sh",
15+
"check-types": "tsc",
1316
"test": "NODE_ENV=test ts-mocha './test/*.js' --exit",
1417
"test-coverage": "nyc npm run test",
1518
"test-coverage-ci": "nyc --reporter=lcovonly --reporter=text npm run test",

scripts/build-for-publish.sh

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
#!/usr/bin/env bash
2+
set -euo pipefail
3+
4+
# This script allows for emitting js and definitions from the typescript into
5+
# the same import locations as the original files.
6+
# When we adjust how we import the library we can move to a "dist" folder and
7+
# explicit "exports".
8+
9+
if [ "${IS_PUBLISHING:-}" != "YES" ]; then
10+
echo "This script is intended to prepare the directory for publishing"
11+
echo "and replaces files. If you only want to build the UI run \`npm run build-ui\`."
12+
echo "Otherwise set IS_PUBLISHING to \"YES\""
13+
exit 1
14+
fi
15+
16+
set -x
17+
18+
REPO_ROOT="$(git rev-parse --show-toplevel)"
19+
cd "$REPO_ROOT"
20+
21+
rm -rf dist || true
22+
tsc --project tsconfig.publish.json
23+
# replace tsx with node for the new index.js
24+
sed -ie '1s/tsx/node/' dist/index.js
25+
# ensure it's executable
26+
chmod +x dist/index.js
27+
# move the ts source
28+
mv src src-old
29+
# move the built source
30+
mv dist/src dist/index.js dist/index.d.ts .
31+
# copy back unchanged ui code
32+
# could probably drop this as the ui code shouldn't really be imported from
33+
# the main package but keep for compat until split out.
34+
mv src-old/ui src/ui
35+
rm -rf src-old index.ts dist

scripts/undo-build.sh

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
#!/usr/bin/env bash
2+
set -euxo pipefail
3+
4+
# Undo what was done by build-for-publish.sh in the event this was ran locally
5+
6+
REPO_ROOT="$(git rev-parse --show-toplevel)"
7+
cd "$REPO_ROOT"
8+
9+
rm -rf dist index.js index.d.ts || true
10+
git checkout src index.ts
11+
git clean -f src

src/proxy/index.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ const options = {
2727
cert: getTLSEnabled() ? fs.readFileSync(getTLSCertPemPath()) : undefined,
2828
};
2929

30-
const proxyPreparations = async () => {
30+
export const proxyPreparations = async () => {
3131
const plugins = getPlugins();
3232
const pluginLoader = new PluginLoader(plugins);
3333
await pluginLoader.load();
@@ -47,15 +47,15 @@ const proxyPreparations = async () => {
4747
};
4848

4949
// just keep this async incase it needs async stuff in the future
50-
const createApp = async () => {
50+
export const createApp = async () => {
5151
const app = express();
5252
// Setup the proxy middleware
5353
app.use(bodyParser.raw(options));
5454
app.use('/', router);
5555
return app;
5656
};
5757

58-
const start = async () => {
58+
export const start = async () => {
5959
const app = await createApp();
6060
await proxyPreparations();
6161
http.createServer(options as any, app).listen(proxyHttpPort, () => {

tsconfig.json

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,12 +8,14 @@
88
"moduleResolution": "Node",
99
"strict": true,
1010
"noEmit": true,
11+
"declaration": true,
1112
"skipLibCheck": true,
1213
"isolatedModules": true,
1314
"module": "CommonJS",
1415
"esModuleInterop": true,
1516
"allowSyntheticDefaultImports": true,
1617
"resolveJsonModule": true
1718
},
18-
"include": ["src"]
19+
"include": ["."],
20+
"exclude": ["experimental/**", "plugins/**"]
1921
}

tsconfig.publish.json

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
{
2+
"extends": "./tsconfig.json",
3+
"compilerOptions": {
4+
"noEmit": false,
5+
"outDir": "./dist"
6+
},
7+
"exclude": [
8+
"experimental/**",
9+
"plugins/**",
10+
"./dist/**",
11+
"./src/ui",
12+
"./src/**/*.jsx",
13+
"./src/context.js"
14+
]
15+
}

0 commit comments

Comments
 (0)