WordPress / wordpress-playground

Run WordPress in the browser via WebAssembly PHP
https://w.org/playground/
GNU General Public License v2.0
1.65k stars 263 forks source link

Restore .d.ts files missing from the published @wp-playground/remote npm package #1949

Closed psrpinto closed 3 weeks ago

psrpinto commented 4 weeks ago

Fixes #1951

The reason why type definitions were not being published was that lerna was using ./packages/playground/remote/ as the source directory, instead of ./dist/packages/playground/remote/. Since the type definitions are only present in dist/, they were not being published.

In #1924 I did test that the published package contained the type definitions, but I did not test it using lerna. Instead, I tested using npm publish directly from the dist/ directory. Now I have tested this PR using lerna and can confirm that the published package will contain the type definitions.

I learned my lesson, from now on I'll always test publishing packages with lerna instead of npm publish :)

Here's the relevant lerna logs that show the type definitions will now be included in the published package:

lerna notice šŸ“¦  @wp-playground/remote@1.0.8
lerna notice === Tarball Contents ===
lerna notice 696B  package.json
lerna notice 465B  lib/boot-playground-remote.d.ts
lerna notice 92B   lib/config.d.ts
lerna notice 567B  lib/create-memoized-fetch.d.ts
lerna notice 23B   index.d.ts
lerna notice 220B  lib/index.d.ts
lerna notice 587B  lib/progress-bar/index.d.ts
lerna notice 1.4kB lib/offline-mode-cache.d.ts
lerna notice 2.4kB lib/playground-client.d.ts
lerna notice 677B  lib/setup-fetch-network-transport.d.ts
lerna notice 2.4kB lib/worker-thread.d.ts
lerna notice 3.6kB lib/worker-utils.d.ts
lerna notice === Tarball Details ===
bgrgicak commented 3 weeks ago

I learned my lesson, from now on I'll always test publishing packages with lerna instead of npm publish :)

I learned something new. šŸ˜„

bgrgicak commented 3 weeks ago

The changes look good to me.

@psrpinto would you mind sharing the full testing instructions?

adamziel commented 3 weeks ago

I learned my lesson, from now on I'll always test publishing packages with lerna instead of npm publish :)

Here's the relevant lerna logs that show the type definitions will now be included in the published package:

Test-publishing npm packages sounds really useful. Would you please document your process in some place the next person would likely look at? One option would be contributor docs, another would be contextually somewhere you have to look before publishing (I don't have any specific location in mind).

adamziel commented 3 weeks ago

It worked! https://www.npmjs.com/package/@wp-playground/remote?activeTab=code

psrpinto commented 3 weeks ago

would you mind sharing the full testing instructions?

Sorry for not providing full test instructions, I will make sure to do so in future PRs.

Part of the reason I didn't share the test instructions was that the procedure to test publishing packages locally is not straightforward, so I thought "no one is actually gonna follow these instructions" :D (In the description of #1924 you can see more or less what is involved, though I did manage to simplify it a bit.)

Test-publishing npm packages sounds really useful. Would you please document your process in some place the next person would likely look at?

I would be happy to document the process. Incidentally, I noticed that lerna also uses verdaccio:

I will take inspiration from lerna's docs, and document something similar for playground.

adamziel commented 3 weeks ago

no one is actually gonna follow these instructions

Even if no one followed them, they'd be super helpful when preparing the next similar PR. Perhaps you would even come back to this PR at one point thinking oh, I've done that once and I think I documented the testing steps somewhere ā€“ that happens to me all the time :)

psrpinto commented 3 weeks ago

Great point Adam, writing documentation for oneself makes a lot of sense.

brandonpayton commented 2 weeks ago

Even if no one followed them, they'd be super helpful when preparing the next similar PR. Perhaps you would even come back to this PR at one point thinking oh, I've done that once and I think I documented the testing steps somewhere ā€“ that happens to me all the time :)

I love this so much. Everybody wins.