Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions .changeset/tame-falcons-learn.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@ladle/react": patch
---

Update `package.json`'s "types" and "exports" so that they point to the type definition file, but only when publishing to NPM.
2 changes: 1 addition & 1 deletion .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,6 @@ jobs:
NPM_TOKEN: ${{ secrets.NPM_TOKEN }}

- name: Publishing next version
run: cd packages/ladle && ./publish-next.js
run: cd packages/ladle && pnpm types && ./publish-next.js
env:
NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
3 changes: 2 additions & 1 deletion packages/ladle/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,8 @@
"cli": "node ./lib/cli/cli.js",
"clean": "rimraf dist && rimraf .ladle && rimraf build && rimraf *.tsbuildinfo",
"serve": "node ./lib/cli/cli.js serve",
"test": "cross-env IMPORT_ROOT=\"./\" vitest"
"test": "cross-env IMPORT_ROOT=\"./\" vitest",
"types": "tsc --project tsconfig.typesoutput.json"
},
"dependencies": {
"@babel/code-frame": "^7.18.6",
Expand Down
6 changes: 6 additions & 0 deletions packages/ladle/publish-next.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,10 @@

import { execSync } from "child_process";
import fs from "fs";
import {
preparePackageJsonForPublish,
revertPackageJson,
} from "./scripts/package-types-helpers.js";

const shortHash = execSync("git rev-parse --short HEAD").toString().trim();
const version = `0.0.0-next-${shortHash}`;
Expand All @@ -13,6 +17,7 @@ const oldVersion = pkgJson.version;
const oldContextVersion = pkgJson.dependencies["@ladle/react-context"];
pkgJson.version = version;
pkgJson.dependencies["@ladle/react-context"] = oldContextVersion.split(":")[1];
preparePackageJsonForPublish(pkgJson);
fs.writeFileSync("./package.json", JSON.stringify(pkgJson, null, 2));

try {
Expand All @@ -24,4 +29,5 @@ try {

pkgJson.version = oldVersion;
pkgJson.dependencies["@ladle/react-context"] = oldContextVersion;
revertPackageJson(pkgJson);
fs.writeFileSync("./package.json", JSON.stringify(pkgJson, null, 2));
35 changes: 35 additions & 0 deletions packages/ladle/scripts/package-types-helpers.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
#!/usr/bin/env node

let oldTypes = null;
let oldExports = null;

export function preparePackageJsonForPublish(packageJson) {
oldTypes = packageJson.types;
packageJson.types = "./lib/app/exports.d.ts";

oldExports = JSON.parse(JSON.stringify(packageJson.exports));
packageJson.exports["."] = {
types: "./lib/app/exports.d.ts",
default: "./lib/app/exports.ts",
};

return packageJson;
}

export function revertPackageJson(packageJson) {
if (!oldTypes) {
console.warn(`'oldTypes' is not defined, so we are unable to revert it`);
}

if (!oldExports) {
console.warn(`'oldExports' is not defined, so we are unable to revert it`);
}

packageJson.types = oldTypes ?? packageJson.types;
oldTypes = null;

packageJson.exports = oldExports ?? packageJson.exports;
oldExports = null;

return packageJson;
}
12 changes: 12 additions & 0 deletions packages/ladle/scripts/revert-package-types.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
import fs from "fs";

const pkgJson = JSON.parse(
fs.readFileSync("./packages/ladle/backup-package.json"),
);
// write updates to package.json
fs.writeFileSync(
"./packages/ladle/package.json",
JSON.stringify(pkgJson, null, 2),
);
// remove backup file
fs.rmSync("./packages/ladle/backup-package.json");
16 changes: 16 additions & 0 deletions packages/ladle/scripts/update-package-types.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
import { preparePackageJsonForPublish } from "./package-types-helpers.js";
import fs from "fs";

const pkgJson = JSON.parse(fs.readFileSync("./packages/ladle/package.json"));
// write out old package.json to a temp file that won't be published
fs.writeFileSync(
"./packages/ladle/backup-package.json",
JSON.stringify(pkgJson, null, 2),
);
// update existing package.json
preparePackageJsonForPublish(pkgJson);
// write updates to package.json
fs.writeFileSync(
"./packages/ladle/package.json",
JSON.stringify(pkgJson, null, 2),
);
9 changes: 9 additions & 0 deletions packages/ladle/tsconfig.typesoutput.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
{
"extends": "../../tsconfig.json",
"compilerOptions": {
"noEmit": false,
"declaration": true,
"emitDeclarationOnly": true
},
"include": ["lib/**/*", "src/**/*"]
}
9 changes: 9 additions & 0 deletions release.sh
Original file line number Diff line number Diff line change
Expand Up @@ -7,5 +7,14 @@ echo "Running release"
echo "Build @ladle/react"
turbo run build --filter=@ladle/react

echo "Update package.json"
node ./packages/ladle/scripts/update-package-types.js

echo "Generate Types":
pnpm --filter @ladle/react types

echo "Changeset publish"
changeset publish

echo "Revert package.json"
node ./packages/ladle/scripts/revert-package-types.js