# Development

If you would like to contribute to the development of dendron, checkout out the repo from github.

You can then follow the setup instructions below to prepare your first commit!

A great place to start is with issues labelled with the size.small label on github. These are items that we picked out specifically for first time contributors and are small self contained task that are well suited for first time contributors.

Remember that you are always welcome to ask for help inside the #dev discord channel.

## Getting Started

### 1. Requirements

Before you begin, you need to make sure to have the following SDKs and tools:

### 2. Clone and npm install

git clone https://github.com/dendronhq/dendron.git
cd dendron
npm install


### 3. Build Repo

• you should run this when building dendron for the first time and also every time you run a git pull
• new dependencies might have been picked up between pulls and this makes sure that they are installed
./bootstrap/scripts/init.sh

• we recommend you use vscode to develop for dendron. there is a dendron.code-workspace file in the root of the monorepo that you should use when developing

### 4. Start Debugging (the plugin)

• NOTE: you don’t need to do this if you are not directly working on the extension (eg. you’re working on the server)

To start an instance of the Dendron with the Debugger, Run Extension (plugin-core) from the debug panel in vscode

Note: Running via Run -> Start Debugging will not work unless you’ve previously targeted Extension (plugin-core)

## Tips

To continuously compile all dependencies, run the following

./bootstrap/scripts/watch.sh


## Troubleshooting

In case something something goes wrong with a build step or you want to save time by not running everything, init.sh is just a thin wrapper around the following scripts, each of which can be run individually

• ./bootstrap/scripts/bootstrap.sh: lerna bootstrap all packages
• ./bootstrap/scripts/build.sh: lerna build all packages
• initialize template repo (this bundles the latest dendron-template with the plugin so that the right notes are initialized when a user creates their first workspace)
 cd packages/plugin-core/
./scripts/sync_vault.sh