Skip to main content
On this page

Create a Deno project

While it is possible to run scripts directly with deno run, for larger projects it is recommended to create a project structure. This way you can organize your code, manage dependencies, script tasks and run tests more easily.

This tutorial will show you how to create a simple project structure for Deno using the deno init command, which will scaffold out a Deno project for you.

Create a basic project Jump to heading

Initialize a new project by running the following command:

deno init my_project

Where my_project is the name of your project. You can read more about the project structure.

Run your project Jump to heading

Navigate to the project directory:

cd my_project

Then you can run the project directly using the deno task command:

deno task dev

Take a look in the deno.json file in your new project. You should see a dev task in the "tasks" field.

deno.json
"tasks": {
  "dev": "deno run --watch main.ts"
},

The dev task is a common task that runs the project in development mode. As you can see, it runs the main.ts file with the --watch flag, which will automatically reload the script when changes are made. You can see this in action if you open the main.ts file and make a change.

Run the tests Jump to heading

In the project directory run:

deno test

This will execute all the tests in the project. You can read more about testing in Deno and we'll cover tests in a little more depth in a later tutorial. At the moment you have one test file, main_test.ts, which tests the add function in main.ts.

Adding to your project Jump to heading

The main.ts file serves as the entry point for your application. It’s where you’ll write your main program logic. When developing your project you will start by removing the default addition program and replace it with your own code. For example, if you’re building a web server, this is where you’d set up your routes and handle requests.

Beyond the initial files, you’ll likely create additional modules (files) to organize your code. Consider grouping related functionality into separate files. Remember that Deno supports ES modules, so you can use import and export statements to structure your code.

Example folder structure for a deno project:

my_project/
├── deno.json
├── main.ts
├── main_test.ts
├── routes/
│   ├── home.ts
│   ├── about.ts
├── services/
│   ├── user.ts
│   ├── post.ts
└──utils/
    ├── logger.ts
    ├── logger_test.ts
    ├── validator_test.ts
    └── validator.ts

This kind of structure keeps your project clean and makes it easier to find and manage files.

🦕 Remember that Deno encourages simplicity and avoids complex build tools. Keep your project modular, testable, and organized. As your project grows, adapt the structure to fit your needs. And most importantly, have fun exploring Deno’s capabilities!