|
13 | 13 | - Dependencies inside of the packages and examples are automatically linked together as local/dynamic dependencies.
|
14 | 14 | - Run the build
|
15 | 15 | - `pnpm build`
|
16 |
| -- Build an example app with the builder. This is actually a little trick because if you build an app in the monorepo it will inherit the monorepo setup and won't work. So you need to have a temporary directory outside of the monorepo to create apps. An example test command command is below. The `-C` flag is used to the working directory of PNPM to the root of the CLI code, and the `--target-dir` flag is used to specify to the CLI the directory to create the app in. |
17 |
| - - `pnpm -C [root of the monorepo]/cli/create-tsrouter-app start --target-dir [temporary directory path]/app-js app-js` |
18 |
| -- Since you will probably be working on `./packages/cta-engine` a lot, you can run the following command to start the CLI in watch mode. After you have built the code at the root with `pnpm build`, you can run the following command to start the CLI in watch mode. |
19 |
| - - `cd ./packages/cta-engine && pnpm dev` |
20 |
| -- Run the `app-js` app just to make sure it works |
21 |
| -- Make changes to the code |
22 |
| - - Re-run `pnpm build` and `pnpm start` (in all its configurations) to make sure the changes work |
| 16 | +- Build an example app with the builder: |
| 17 | + - `node [root of the monorepo]/cli/create-tsrouter-app/dist/index.js app-js` |
| 18 | + - Do not attempt to build an app within the monorepo because the dependencies will be hoisted into the monorepo. |
| 19 | +- Run `pnpm dev` at that top level to build everything in watch mode |
| 20 | +- Run `pnpm build` and `pnpm test` to make sure the changes work |
23 | 21 | - Check your work and PR
|
24 | 22 |
|
25 |
| -# Testing combinations |
| 23 | +# Testing Add-ons and Starters |
26 | 24 |
|
27 |
| -These must all product running applications that can be built (`pnpm build`) and tested (`pnpm test`). |
| 25 | +Create the add-on or starter using the CLI. Then serve it locally from the project directory using `npx static-server`. |
28 | 26 |
|
29 |
| -| Command | Description | |
30 |
| -| -------------------------------------------------------- | ------------------------------------------------------------------ | |
31 |
| -| `pnpm start app-js` | Creates a JavaScript app | |
32 |
| -| `pnpm start app-ts --template typescript` | Creates a TypeScript app | |
33 |
| -| `pnpm start app-js-tw --tailwind` | Creates a JavaScript app with Tailwind CSS | |
34 |
| -| `pnpm start app-ts-tw --template typescript --tailwind` | Creates a TypeScript app with Tailwind CSS | |
35 |
| -| `pnpm start app-fr --template file-router` | Creates a TypeScript app with File Based Routing | |
36 |
| -| `pnpm start app-fr-tw --template file-router --tailwind` | Creates a TypeScript app with File Based Routing with Tailwind CSS | |
| 27 | +Then, when creating apps with add-ons: |
| 28 | + |
| 29 | +```bash |
| 30 | +node [root of the monorepo]/cli/create-tsrouter-app/dist/index.js app-js --add-ons http://localhost:9080/add-on.json |
| 31 | +``` |
| 32 | + |
| 33 | +And when creating apps with a starter: |
| 34 | + |
| 35 | +```bash |
| 36 | +node [root of the monorepo]/cli/create-tsrouter-app/dist/index.js app-js --starter http://localhost:9080/starter.json |
| 37 | +``` |
| 38 | + |
| 39 | +# Developing on the CTA UI |
| 40 | + |
| 41 | +The CTA UI is somewhat tricky to develop on because it's both a web server and a React app. You need to run the CLI in "API" model and then the React app in dev mode, as well as the whole monorepo in watch mode. |
| 42 | + |
| 43 | +## Starting the API Server |
| 44 | + |
| 45 | +Let's start off with how to run the CLI in "API" mode. Here we are running the CLI in an empty directory in app creation mode. |
| 46 | + |
| 47 | +```bash |
| 48 | +CTA_DISABLE_UI=true node ../create-tsrouter-app/cli/create-tsrouter-app/dist/index.js --ui |
| 49 | +``` |
| 50 | + |
| 51 | +If this is working you will see the following output: |
| 52 | + |
| 53 | +``` |
| 54 | +Create TanStack API is running on http://localhost:8080 |
| 55 | +``` |
| 56 | + |
| 57 | +Note that it say "Create TanStack **API**" and not "Create TanStack **App**". This is important. This means that the CLI is providing API endpoints, but **not** serving the static build files of the React app. |
| 58 | + |
| 59 | +Here is the same command for the `add` mode: |
| 60 | + |
| 61 | +```bash |
| 62 | +CTA_DISABLE_UI=true node ../create-tsrouter-app/cli/create-tsrouter-app/dist/index.js add --ui |
| 63 | +``` |
| 64 | + |
| 65 | +## Starting the React App |
| 66 | + |
| 67 | +Now that we have the API server running, we can start the React app in dev mode. |
| 68 | + |
| 69 | +```bash |
| 70 | +cd packages/cta-ui |
| 71 | +pnpm dev:ui |
| 72 | +``` |
| 73 | + |
| 74 | +At this poing you should be able to navigate to `http://localhost:3000` and see the React app connected to the API server on `http://localhost:8080`. |
| 75 | + |
| 76 | +## Running the Monorepo in Watch Mode |
| 77 | + |
| 78 | +At the top level of the monorepo, run the following command to start the build in watch mode. |
| 79 | + |
| 80 | +```bash |
| 81 | +pnpm dev |
| 82 | +``` |
| 83 | + |
| 84 | +This will build the monorepo and watch for changes in any of the libraries. (It will **not** build changes for the React app within the `cta-ui` package.) |
| 85 | + |
| 86 | +This is important because you might need to change API endpoints in the CTA library, or in the engine. If you do make those kinds of changes then the you will need to re-run the CLI in "API" mode to pick up the changes. |
0 commit comments