mirror of
https://github.com/oven-sh/bun
synced 2026-02-09 10:28:47 +00:00
Delete extremely out of date docs
This commit is contained in:
@@ -1,151 +0,0 @@
|
||||
{% callout %}
|
||||
**Warning** — This will soon have breaking changes. It was designed when Bun was mostly a dev server and not a JavaScript runtime.
|
||||
{% /callout %}
|
||||
|
||||
Frameworks preconfigure Bun to enable developers to use Bun with their existing tooling.
|
||||
|
||||
Frameworks are configured via the `framework` object in the `package.json` of the framework (not in the application’s `package.json`):
|
||||
|
||||
Here is an example:
|
||||
|
||||
```json
|
||||
{
|
||||
"name": "bun-framework-next",
|
||||
"version": "0.0.0-18",
|
||||
"description": "",
|
||||
"framework": {
|
||||
"displayName": "Next.js",
|
||||
"static": "public",
|
||||
"assetPrefix": "_next/",
|
||||
"router": {
|
||||
"dir": ["pages", "src/pages"],
|
||||
"extensions": [".js", ".ts", ".tsx", ".jsx"]
|
||||
},
|
||||
"css": "onimportcss",
|
||||
"development": {
|
||||
"client": "client.development.tsx",
|
||||
"fallback": "fallback.development.tsx",
|
||||
"server": "server.development.tsx",
|
||||
"css": "onimportcss",
|
||||
"define": {
|
||||
"client": {
|
||||
".env": "NEXT_PUBLIC_",
|
||||
"defaults": {
|
||||
"process.env.__NEXT_TRAILING_SLASH": "false",
|
||||
"process.env.NODE_ENV": "\"development\"",
|
||||
"process.env.__NEXT_ROUTER_BASEPATH": "''",
|
||||
"process.env.__NEXT_SCROLL_RESTORATION": "false",
|
||||
"process.env.__NEXT_I18N_SUPPORT": "false",
|
||||
"process.env.__NEXT_HAS_REWRITES": "false",
|
||||
"process.env.__NEXT_ANALYTICS_ID": "null",
|
||||
"process.env.__NEXT_OPTIMIZE_CSS": "false",
|
||||
"process.env.__NEXT_CROSS_ORIGIN": "''",
|
||||
"process.env.__NEXT_STRICT_MODE": "false",
|
||||
"process.env.__NEXT_IMAGE_OPTS": "null"
|
||||
}
|
||||
},
|
||||
"server": {
|
||||
".env": "NEXT_",
|
||||
"defaults": {
|
||||
"process.env.__NEXT_TRAILING_SLASH": "false",
|
||||
"process.env.__NEXT_OPTIMIZE_FONTS": "false",
|
||||
"process.env.NODE_ENV": "\"development\"",
|
||||
"process.env.__NEXT_OPTIMIZE_IMAGES": "false",
|
||||
"process.env.__NEXT_OPTIMIZE_CSS": "false",
|
||||
"process.env.__NEXT_ROUTER_BASEPATH": "''",
|
||||
"process.env.__NEXT_SCROLL_RESTORATION": "false",
|
||||
"process.env.__NEXT_I18N_SUPPORT": "false",
|
||||
"process.env.__NEXT_HAS_REWRITES": "false",
|
||||
"process.env.__NEXT_ANALYTICS_ID": "null",
|
||||
"process.env.__NEXT_CROSS_ORIGIN": "''",
|
||||
"process.env.__NEXT_STRICT_MODE": "false",
|
||||
"process.env.__NEXT_IMAGE_OPTS": "null",
|
||||
"global": "globalThis",
|
||||
"window": "undefined"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Here are type definitions:
|
||||
|
||||
```ts
|
||||
type Framework = Environment & {
|
||||
// This changes what’s printed in the console on load
|
||||
displayName?: string;
|
||||
|
||||
// This allows a prefix to be added (and ignored) to requests.
|
||||
// Useful for integrating an existing framework that expects internal routes to have a prefix
|
||||
// e.g. "_next"
|
||||
assetPrefix?: string;
|
||||
|
||||
development?: Environment;
|
||||
production?: Environment;
|
||||
|
||||
// The directory used for serving unmodified assets like fonts and images
|
||||
// Defaults to "public" if exists, else "static", else disabled.
|
||||
static?: string;
|
||||
|
||||
// "onimportcss" disables the automatic "onimportcss" feature
|
||||
// If the framework does routing, you may want to handle CSS manually
|
||||
// "facade" removes CSS imports from JavaScript files,
|
||||
// and replaces an imported object with a proxy that mimics CSS module support without doing any class renaming.
|
||||
css?: "onimportcss" | "facade";
|
||||
|
||||
// Bun's filesystem router
|
||||
router?: Router;
|
||||
};
|
||||
|
||||
type Define = {
|
||||
// By passing ".env", Bun will automatically load .env.local, .env.development, and .env if exists in the project root
|
||||
// (in addition to the processes’ environment variables)
|
||||
// When "*", all environment variables will be automatically injected into the JavaScript loader
|
||||
// When a string like "NEXT_PUBLIC_", only environment variables starting with that prefix will be injected
|
||||
|
||||
".env": string | "*";
|
||||
|
||||
// These environment variables will be injected into the JavaScript loader
|
||||
// These are the equivalent of Webpack’s resolve.alias and esbuild’s --define.
|
||||
// Values are parsed as JSON, so they must be valid JSON. The only exception is '' is a valid string, to simplify writing stringified JSON in JSON.
|
||||
// If not set, `process.env.NODE_ENV` will be transformed into "development".
|
||||
"defaults": Record<string, string>;
|
||||
};
|
||||
|
||||
type Environment = {
|
||||
// This is a wrapper for the client-side entry point for a route.
|
||||
// This allows frameworks to run initialization code on pages.
|
||||
client: string;
|
||||
// This is a wrapper for the server-side entry point for a route.
|
||||
// This allows frameworks to run initialization code on pages.
|
||||
server: string;
|
||||
// This runs when "server" code fails to load due to an exception.
|
||||
fallback: string;
|
||||
|
||||
// This is how environment variables and .env is configured.
|
||||
define?: Define;
|
||||
};
|
||||
|
||||
// Bun's filesystem router
|
||||
// Currently, Bun supports pages by either an absolute match or a parameter match.
|
||||
// pages/index.tsx will be executed on navigation to "/" and "/index"
|
||||
// pages/posts/[id].tsx will be executed on navigation to "/posts/123"
|
||||
// Routes & parameters are automatically passed to `fallback` and `server`.
|
||||
type Router = {
|
||||
// This determines the folder to look for pages
|
||||
dir: string[];
|
||||
|
||||
// These are the allowed file extensions for pages.
|
||||
extensions?: string[];
|
||||
};
|
||||
```
|
||||
|
||||
To use a framework, you pass `bun bun --use package-name`.
|
||||
|
||||
Your framework’s `package.json` `name` should start with `bun-framework-`. This is so that people can type something like `bun bun --use next` and it will check `bun-framework-next` first. This is similar to how Babel plugins tend to start with `babel-plugin-`.
|
||||
|
||||
For developing frameworks, you can also do `bun bun --use ./relative-path-to-framework`.
|
||||
|
||||
If you’re interested in adding a framework integration, please reach out. There’s a lot here, and it’s not entirely documented yet.
|
||||
@@ -1,33 +0,0 @@
|
||||
To create a new Next.js app with bun:
|
||||
|
||||
```bash
|
||||
$ bun create next ./app
|
||||
$ cd app
|
||||
$ bun dev # start dev server
|
||||
```
|
||||
|
||||
To use an existing Next.js app with bun:
|
||||
|
||||
```bash
|
||||
$ bun add bun-framework-next
|
||||
$ echo "framework = 'next'" > bunfig.toml
|
||||
$ bun bun # bundle dependencies
|
||||
$ bun dev # start dev server
|
||||
```
|
||||
|
||||
Many of Next.js’ features are supported, but not all.
|
||||
|
||||
Here’s what doesn’t work yet:
|
||||
|
||||
- `getStaticPaths`
|
||||
- same-origin `fetch` inside of `getStaticProps` or `getServerSideProps`
|
||||
- locales, zones, `assetPrefix` (workaround: change `--origin \"http://localhost:3000/assetPrefixInhere\"`)
|
||||
- `next/image` is polyfilled to a regular `<img src>` tag.
|
||||
- `proxy` and anything else in `next.config.js`
|
||||
- API routes, middleware (middleware is easier to support, though! Similar SSR API)
|
||||
- styled-jsx (technically not Next.js, but often used with it)
|
||||
- React Server Components
|
||||
|
||||
When using Next.js, Bun automatically reads configuration from `.env.local`, `.env.development` and `.env` (in that order). `process.env.NEXT_PUBLIC_` and `process.env.NEXT_` automatically are replaced via `--define`.
|
||||
|
||||
Currently, any time you import new dependencies from `node_modules`, you will need to re-run `bun bun --use next`. This will eventually be automatic.
|
||||
Reference in New Issue
Block a user