Skip to content

Dropping support of Node.js pre 6.3 and changing the way packages are linked into node_modules #519

Description

@zkochan

This issue consists of 2 parts. The 1st part is about dropping support of Node.js versions that don't have the --preserve-symlinks support. Yarn is clearly a winner over pnpm if pnpm does not use a machine store. However, machine stores currently work well only with the --preserve-symlinks option, which is available from Node.js v6.3 only.

The 2nd part of the issue solves a lot of issues that are currently open in the pnpm backlog and are related to circular symlinks. It will also allow the creation of dependency locks. The reason why we cannot create dependency locks with the current architecture is because we symlink the package folders together with the node_modules of the package.

The new implementation will symlink each file and directory from the root of the package. Stores will only have the packages and no node_modules (except the bundled ones).

Pros:

  • it will be also a proof of concept of Isaacs' suggestion of solving the symlinking problem in Node.

Cons:

  • performance might be worse (although it doesn't feel like slower, I already have a working implementation on a branch)
  • symlinks work on Windows only with admin rights

I also suggest to bump the version to 1 for these changes. pre-1 can stay for the old implementation with support of v4.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions