Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Migrate to NX-based build #151

Merged
merged 26 commits into from
Mar 16, 2023
Merged

Migrate to NX-based build #151

merged 26 commits into from
Mar 16, 2023

Conversation

adamziel
Copy link
Collaborator

@adamziel adamziel commented Mar 16, 2023

Description

Sets up the correct build pipeline for all parts of Playground and PHP.wasm. This enables a public release of the Playground API npm package!

I've been struggling with this for a while and couldn't understand what's so hard. NX made it apparent – look at this dependency graph!

CleanShot 2023-03-16 at 23 16 26@2x

No wonder it's been almost impossible to set everything up by hand!

Usage

Start with yarn install

Shortcuts

To start a copy of wasm.wordpress.net locally, run yarn run dev.
To build it, run yarn run build.

Fully qualified commands

In reality, these yarn run commands are just triggering the underlying project's nx dev and build commands:

nx dev playground-website
nx build playground-website

Here's a few more interesting commands:

# Build and run PHP.wasm CLI
nx start php-wasm-cli

# Build latest WordPress releases
nx recompile-wordpress:all playground-remote

# Recompile PHP 5.6 - 8.2 releases to .wasm for web
nx recompile-php:all php-wasm-web

# Recompile PHP 5.6 - 8.2 releases to .wasm for node
nx recompile-php:all php-wasm-node

# Builds markdown files for readthedocs site
nx build docs-site

# Builds the Playground Client npm package
nx build playground-client

NX is the tool Playground needed from the outset

It's ridiculous how many problems this solves:

  • The build pipeline is explicitly defined and easy to modify
  • Tasks only run once their dependencies are ready
  • The dev mode works and is fast
  • The build works and is fast
  • We get CI checks to confirm the entire build process still works (which solves Errors when running yarn install #150)
  • Cross-package TypeScript just works
  • There are linters and formatters (which solves Setup JavaScript code linters #14)
  • Documentation is correctly generated from the latest built artifacts
  • There are nice generators for bootstraping new packages and moving the existing ones around
  • There are checks to ensure the private php-wasm-common package is not imported by anything else than php-wasm-web and php-wasm-node

Next steps

  • Add Lerna to harness package publishing
  • Additional developer documentation for the nx-based flow

Related to #148 and #147

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

1 participant