solidjs / solid-start

SolidStart, the Solid app framework
https://start.solidjs.com
MIT License
4.93k stars 371 forks source link
file-system-routing meta-framework sdk solid-js spa ssr

Solid Docs

SolidStart

This is the home of the SolidStart, the Solid app framework.

Features

Getting started

Create a SolidStart application and run a development server using your preferred package manager:

mkdir my-app
cd my-app

# with npm
npm init solid@latest
npm install
npm run dev

# or with pnpm
pnpm create solid@latest
pnpm install
pnpm dev

# or with Bun
bun create solid@latest
bun install
bun dev

Development

You should use a Node.js version manager compatible with .node-version (asdf-vm is a great option macOS/Linux users)

The monorepo uses pnpm as the package manager. To install pnpm, run the following command in your terminal.

npm install -g pnpm

Run pnpm install to install all the dependencies for the packages and examples in your monorepo.

Run pnpm build to build SolidStart project

Monorepo & project.json "workspace" support

If you are using SolidStart within a monorepo that takes advantage of the `package.json` `"workspaces"` property (e.g. [Yarn workspaces](https://classic.yarnpkg.com/en/docs/workspaces/)) with hoisted dependencies (the default for Yarn), you must include `#solidjs/start` within the optional `"nohoist"` (for Yarn v2 or higher, see further down for instructions) workspaces property. - _In the following, "workspace root" refers to the root of your repository while "project root" refers to the root of a child package within your repository._ For example, if specifying `"nohoist"` options from the workspace root (i.e. for all packages): ```jsonc // in workspace root { "workspaces": { "packages": [ /* ... */ ], "nohoist": ["**/@solidjs/start"] } } ``` If specifying `"nohoist"` options for a specific package using `@solidjs/start`: ```jsonc // in project root of a workspace child { "workspaces": { "nohoist": ["@solidjs/start"] } } ``` Regardless of where you specify the `nohoist` option, you also need to include `@solidjs/start` as a `devDependency` in the child `package.json`. The reason why this is necessary is because `@solidjs/start` creates an `index.html` file within your project which expects to load a script located in `/node_modules/@solidjs/start/runtime/entry.jsx` (where `/` is the path of your project root). By default, if you hoist the `@solidjs/start` dependency into the workspace root then that script will not be available within the package's `node_modules` folder. **Yarn v2 or higher** The `nohoist` option is no longer available in Yarn v2+. In this case, we can use the `installConfig` property in the `package.json` (either workspace package or a specific project package) to make sure our deps are not hoisted. ```jsonc // in project root of a workspace child { "installConfig": { "hoistingLimits": "dependencies" } } ```