Skip to content

wp-now: Recognize when running in WebContainers environment and use the correct URL#150

Open
adamziel wants to merge 3 commits intotrunkfrom
webcontainers-support
Open

wp-now: Recognize when running in WebContainers environment and use the correct URL#150
adamziel wants to merge 3 commits intotrunkfrom
webcontainers-support

Conversation

@adamziel
Copy link
Collaborator

Description TBD

CleanShot 2024-01-26 at 16 20 59@2x

@adamziel adamziel added Enhancement New feature or request wp-now labels Jan 26, 2024
body: body as string,
};

data.headers['host'] = options.absoluteUrl
Copy link
Collaborator Author

@adamziel adamziel Jan 26, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This should be handled by webcontainers, not wp-now, and removed from here.

return getCodeSpaceURL(port);
}
if (isWebContainer()) {
return HostURL.parse('http://localhost:' + port).toString();
Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This returns a http:// URL when it should return a https:// URL

@adamziel adamziel force-pushed the webcontainers-support branch from 420ec01 to 8a53ccb Compare February 9, 2024 23:13
adamziel pushed a commit that referenced this pull request Apr 15, 2024
Improvements to #150
with fixes related to updates for wp-now in WebContainer

Can be retargetting to `trunk` if you want to close the other PR

## Testing Instructions

Visit https://stackblitz.com/edit/node and run 

```bash
npx @wp-now/wp-now@some-version start
```

WP-Now should load in your browser
johnhooks pushed a commit to johnhooks/playground-tools that referenced this pull request Oct 11, 2024
## Description

Sets up the correct build pipeline for all parts of Playground and PHP.wasm. This enables a public release of the [Playground API](WordPress/wordpress-playground#149) npm package!

I've been [struggling](WordPress/wordpress-playground#146) with [this](WordPress/wordpress-playground#70) for [a while](WordPress/wordpress-playground#150) and couldn't understand what's so hard. NX made it apparent – look at this dependency graph!

<img width="1291" alt="CleanShot 2023-03-16 at 23 16 26@2x" src="https://user-images.githubusercontent.com/205419/225764795-7fa8e972-09f8-41ef-aac2-1c96bd100ea0.png">

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:

```bash
nx dev playground-website
nx build playground-website
```

Here's a few more interesting commands:

```bash
# 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 WordPress#150)
* Cross-package TypeScript just works
* There are linters and formatters (which solves WordPress#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 WordPress/wordpress-playground#148 and WordPress/wordpress-playground#147
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Enhancement New feature or request wp-now

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant