Fresh logo

Changing the source directory

When you initialize a project with deno run -A -r https://fresh.deno.dev, you’ll end up with a project like the following:

Project Structure
.
├── README.md
├── components
│   └── Button.tsx
├── deno.json
├── dev.ts
├── fresh.gen.ts
├── islands
│   └── Counter.tsx
├── main.ts
├── routes
│   ├── greet
│   │   ├── [name].tsx
│   ├── api
│   │   └── joke.ts
│   ├── _404.tsx
│   └── index.tsx
└── static
    ├── favicon.ico
    └── logo.svg

Using a src directory

If you’d like your code to live in an src directory (or any other directory of your choosing), then you’ll need to do the following things:

  1. Move all your files, except deno.json and README.md, to the src directory.
  2. Modify the start task in deno.json to point to the new directory.

Here’s what the diff of deno.json looks like:

deno.json
 {
   "lock": false,
   "tasks": {
-    "start": "deno run -A --watch=static/,routes/ dev.ts"
+    "start": "deno run -A --watch=src/static/,src/routes/ src/dev.ts"
   },
   "imports": {
     "$fresh/": "file:///Users/reed/code/fresh/",

The resulting file structure looks like this:

Project Structure
.
├── README.md
├── deno.json
└── src
    ├── components
    │   └── Button.tsx
    ├── dev.ts
    ├── fresh.gen.ts
    ├── islands
    │   └── Counter.tsx
    ├── main.ts
    ├── routes
    │   ├── greet
    │   │   ├── [name].tsx
    │   ├── api
    │   │   └── joke.ts
    │   ├── _404.tsx
    │   └── index.tsx
    └── static
        ├── favicon.ico
        └── logo.svg

Success! Your code now lives elsewhere.