npm / cli

the package manager for JavaScript
https://docs.npmjs.com/cli/
Other
8.5k stars 3.19k forks source link

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

Open brianpmaher opened 2 weeks ago

brianpmaher commented 2 weeks ago

Is there an existing issue for this?

This issue exists in the latest npm version

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

Kyle-Ignis commented 2 weeks ago

Agreed. Please fix.

kchindam-infy commented 2 weeks ago

@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 commented 1 week ago
Screenshot 2024-11-08 at 11 51 37 AM

i dont believe this what we expect to happen

brianpmaher commented 1 week ago

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 commented 1 week ago

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 commented 1 week ago

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 commented 1 week ago
Screenshot 2024-11-08 at 12 28 00 PM
Kyle-Ignis commented 1 week ago

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 commented 6 days ago

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