nachoaldamav/ultra

Compare installed versions of packages.

Closed this issue · 3 comments

Looks like this problem is related to duplicated dependencies with different versions.

  • Compare installed versions and skip if the package is suitable.
  • Cache manifests to speed up fetching.

Originally posted by @nachoaldamav in #38 (comment)

The new system to compare installed versions works with the following projects.

Tests

  • Vite
  • next.js
  • Remix
  • Monorepo

Found errors with Remix projects, multiple versions of esbuild are installed.

This is caused because a subdependency installs the version * (latest) before the fixed version of @remix-run/dev.

Potential fix

  • Skip * versions and add it to __SKIPPED array.
  • After all the dependencies and subdependencies are installed, try to install the __SKIPPED packages (ignore them if the package is already in the root node_modules.

Found errors with Remix projects, multiple versions of esbuild are installed.

This is caused because a subdependency installs the version * (latest) before the fixed version of @remix-run/dev.

Potential fix

  • Skip * versions and add it to __SKIPPED array.
  • After all the dependencies and subdependencies are installed, try to install the __SKIPPED packages (ignore them if the package is already in the root node_modules.

Partially fixed, now some sub-dependencies are not installed because the .fnpm parent file is not updated.

Example

rollup-plugin-node-polyfills is a dependency of @esbuild-plugins/node-modules-polyfill.
The .fnpm file of @esbuild-plugins/node-modules-polyfill is empty which means that it's dependencies are not installed.