Skip to content

[BUG] npm install creates directories and empty package.json #7892

Open
@brianpmaher

Description

@brianpmaher

Is there an existing issue for this?

  • I have searched the existing issues

This issue exists in the latest npm version

  • I am using the latest npm

Current Behavior

Running npm install from a directory without a package.json creates a empty package.json file.
Additionally, running npm --prefix some-directory install will also create the directory.

Expected Behavior

100% of the time I have done this, it has been on accident and I then have to go and delete the directory and/or the package.json file it creates.

I think it would be better to add an error message output indicating that there is no package.json present in the directory or the directory doesn't exist, and then suggesting I run npm init instead.

Steps To Reproduce

  1. Create a new temporary directory wherever mkdir temp
  2. Enter the directory cd temp
  3. npm --prefix temp2 install

Environment

  • npm: 10.8.3
  • Node.js: 22.9.0
  • OS Name: MacOS Sonoma 14.6.1
  • System Model Name: Apple M3 Pro

Activity

Kyle-Ignis

Kyle-Ignis commented on Nov 4, 2024

@Kyle-Ignis

Agreed. Please fix.

kchindam-infy

kchindam-infy commented on Nov 8, 2024

@kchindam-infy

@brianpmaher I have tested the scenario where running npm install in an empty directory does not create a package.json or any other files, which seems to align with expected behavior npm generally needs a package.json to install dependencies.

Kyle-Ignis

Kyle-Ignis commented on Nov 8, 2024

@Kyle-Ignis
Screenshot 2024-11-08 at 11 51 37 AM

i dont believe this what we expect to happen

brianpmaher

brianpmaher commented on Nov 8, 2024

@brianpmaher
Author

I misspoke, it creates a package-lock.json, not package.json and it does also create a directory when using --prefix

pat-in-a-hat

pat-in-a-hat commented on Nov 8, 2024

@pat-in-a-hat

a similarly frustrating experience is if you npm uninstall a package in the wrong directory. npm will also go ahead and build a package-lock.json and an empty package.json.

desired behavior would be for npm to warn you that no package.json file was found in that directory

pat-in-a-hat

pat-in-a-hat commented on Nov 8, 2024

@pat-in-a-hat

this appears to be easily reproducible.

Steps To Reproduce

  1. Create a new directory mkdir temp
  2. Enter the directory cd temp
  3. npm uninstall is-even

A package.json and package-lock.json file will now be present

Expected Behavior

When a user runs step 3 npm should warn that no package.json file is present then end

Kyle-Ignis

Kyle-Ignis commented on Nov 8, 2024

@Kyle-Ignis
Screenshot 2024-11-08 at 12 28 00 PM
Kyle-Ignis

Kyle-Ignis commented on Nov 8, 2024

@Kyle-Ignis

I would be happy to author a PR on this, especially if someone is willing to point me in the right direction just to get started.

kchindam-infy

kchindam-infy commented on Nov 15, 2024

@kchindam-infy

@Kyle-Ignis Appreciate if you can raise the PR.

added a commit that references this issue on Nov 25, 2024

fix: issue npm#7892 - fix for npm install creating directories and em…

added a commit that references this issue on Dec 5, 2024

fix: issue npm#7892 prevent package-lock.json creation without packag…

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    Bugthing that needs fixingNeeds Triageneeds review for next steps

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

      Participants

      @brianpmaher@pat-in-a-hat@kchindam-infy@Kyle-Ignis

      Issue actions

        [BUG] npm install creates directories and empty package.json · Issue #7892 · npm/cli