> For the complete documentation index, see [llms.txt](https://docs.exile.watch/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.exile.watch/projects/nucleus/contributing-scripts.md).

# Contributing (scripts)

<figure><img src="/files/phOqyIiKbklQTpQi6Q8A" alt="" width="200"><figcaption><p>exile.watch logo</p></figcaption></figure>

## [Prerequisites](/development/prerequisites.md)

## Development

### 1. [Fork @exile-watch/nucleus repo](https://github.com/exile-watch/nucleus)

### 2. [Create GitHub PAT token](/development/generating-github-pat.md)

### 3. [Create .npmrc file](/development/.npmrc-file.md)&#x20;

### 4. Install dependencies

```bash
# project root
$: nvm use # uses node version that's defined in .nvmrc
$: npm i # install dependencies
```

### 5. Check changes made in [nucleus](/projects/nucleus.md) package locally in [crucible](/projects/crucible.md) project

#### a) Create [nucleus](/projects/nucleus.md) package link

<pre class="language-bash"><code class="lang-bash"><strong># @exile-watch/nucleus project
</strong># package path e.g. ~/nucleus/packages/encounter-data
$: npm link
</code></pre>

#### b) Build [nucleus](/projects/nucleus.md) package

<pre class="language-bash"><code class="lang-bash"><strong># @exile-watch/nucleus project
</strong># package path e.g. ~/nucleus/packages/encounter-data
$: npm run build
</code></pre>

#### c) Link [nucleus](/projects/nucleus.md) package in [crucible](/projects/crucible.md) project

<pre class="language-bash"><code class="lang-bash"><strong># @exile-watch/crucible project
</strong># root path ~/crucible
$: npm link @exile-watch/encounter-data #
</code></pre>

### 6. Conclusion

Not happy with the change? \
Repeat step [#b-build-nucleus-package](#b-build-nucleus-package "mention") and [#c-link-nucleus-package-in-crucible-project](#c-link-nucleus-package-in-crucible-project "mention")

Happy with the change? \
Create a new pull request and don't forget to locally unlink modified package:

<pre class="language-bash"><code class="lang-bash"><strong># @exile-watch/nucleus project
</strong># package path e.g. ~/nucleus/packages/encounter-data
$: npm unlink
</code></pre>

<pre class="language-bash"><code class="lang-bash"><strong># @exile-watch/crucible project
</strong># root path ~/crucible
$: npm i # this will "revert" linked module to the actual package 
</code></pre>
