diff --git a/packages/turbo-repository/package.json b/packages/turbo-repository/package.json index a325aa21ef0e1..6a00004fa52f8 100644 --- a/packages/turbo-repository/package.json +++ b/packages/turbo-repository/package.json @@ -5,8 +5,8 @@ "bugs": "https://github.com/vercel/turborepo/issues", "homepage": "https://turbo.build/repo", "scripts": { - "build": "napi build --platform -p turborepo-napi --cargo-cwd ../../ --cargo-name turborepo_napi native --js false --dts ../js/index.d.ts && mkdir -p js/dist && cp js/index.js js/dist/index.js && cp js/index.d.ts js/dist/index.d.ts", - "build:release": "napi build --release --platform -p turborepo-napi --cargo-cwd ../../ --cargo-name turborepo_napi native --js false", + "build": "bash scripts/build.sh", + "build:release": "bash scripts/build.sh release", "package": "node scripts/publish.mjs", "test": "node --import tsx --test __tests__/*.test.ts" }, @@ -17,6 +17,7 @@ "@napi-rs/cli": "^2.16.3", "execa": "^8.0.1", "fs-extra": "^11.1.1", + "prettier": "^3.2.5", "tsx": "^4.7.2" }, "main": "dist/index.js", diff --git a/packages/turbo-repository/scripts/build.sh b/packages/turbo-repository/scripts/build.sh new file mode 100755 index 0000000000000..418e862b67491 --- /dev/null +++ b/packages/turbo-repository/scripts/build.sh @@ -0,0 +1,25 @@ +#!/bin/bash + +flags="\ + --platform \ + -p turborepo-napi \ + --cargo-cwd ../../ \ + --cargo-name turborepo_napi \ + native \ + --js false \ +" + +if [ "$1" == "release" ]; then + flags+=" --release" +else + flags+=" --dts ../js/index.d.ts" +fi + +node_modules/.bin/napi build $flags + +# Unfortunately, when napi generates a .d.ts file, it doesn't match our formatting rules (it doesn't have semicolons). +# Since there's now way to configure this from napi itself, so we need to run prettier on it after generating it. +node_modules/.bin/prettier --write js/index.d.ts + +mkdir -p js/dist +cp js/index.{js,d.ts} js/dist/ diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index d99b70c76dc7c..87d0714c5a9bb 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -561,6 +561,9 @@ importers: fs-extra: specifier: ^11.1.1 version: 11.1.1 + prettier: + specifier: ^3.2.5 + version: 3.3.3 tsx: specifier: ^4.7.2 version: 4.7.2 @@ -9489,6 +9492,12 @@ packages: hasBin: true dev: true + /prettier@3.3.3: + resolution: {integrity: sha512-i2tDNA0O5IrMO757lfrdQZCc2jPNDVntV0m/+4whiDfWaTKfMNgR7Qz0NAeGz/nRqF4m5/6CLzbP4/liHt12Ew==} + engines: {node: '>=14'} + hasBin: true + dev: true + /pretty-format@27.5.1: resolution: {integrity: sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0}