# \`resolve\` removes packages under \[extra\] from Manifest

**URL:** <https://discourse.julialang.org/t/resolve-removes-packages-under-extra-from-manifest/15937>\
**Category:** General Usage\
**Tags:** question, package\
**Created:** [October 5, 2018, 5:48pm UTC](https://discourse.julialang.org/t/resolve-removes-packages-under-extra-from-manifest/15937 "2018-10-05T17:48:29Z")\
**Posts on this page:** 2\
**Page:** 1

<div class="post-metadata">

**Author:** ![e3c6](https://avatars.discourse-cdn.com/v4/letter/e/e79b87/32.png) [@e3c6](https://discourse.julialang.org/u/e3c6)\
**Post date:** [October 5, 2018, 5:48pm UTC](https://discourse.julialang.org/t/resolve-removes-packages-under-extra-from-manifest/15937/1 "2018-10-05T17:48:29Z")

</div>

It seems that `resolve` removes packages under [extra] (in Project.toml) from the Manifest.toml.

Is this intended behavior? It implies that `instante`’ing a package is not enough to make it testable, and that packages that are only required for testing might get completely removed from the system after a call to `gc` (if no other project references it).

---

<div class="post-metadata">

**Author:** ![kristoffer.carlsson](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/kristoffer.carlsson/32/22_2.png) [@kristoffer.carlsson](https://discourse.julialang.org/u/kristoffer.carlsson)\
**Post date:** [October 5, 2018, 5:54pm UTC](https://discourse.julialang.org/t/resolve-removes-packages-under-extra-from-manifest/15937/2 "2018-10-05T17:54:22Z")

</div>

Packages in `extra` are not put in the Manifest at all (except when they are used) and they will indeed be garbage collected.

I am kinda coming around thinking that the whole `extra` + `target` thing was perhaps a mistake, or at least not thought through enough for it to make sense for it to been implemented, and something like [PSA: Use a project for building your docs](https://discourse.julialang.org/t/psa-use-a-project-for-building-your-docs/14974) (but for testing) should be used instead.  
Using that means the testing environment is fully reproducible, which is not the case right now.
