Open
Description
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
- Create a new temporary directory wherever
mkdir temp
- Enter the directory
cd temp
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 commentedon Nov 4, 2024
Agreed. Please fix.
kchindam-infy commentedon Nov 8, 2024
@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 commentedon Nov 8, 2024
i dont believe this what we expect to happen
brianpmaher commentedon Nov 8, 2024
I misspoke, it creates a
package-lock.json
, notpackage.json
and it does also create a directory when using--prefix
pat-in-a-hat commentedon Nov 8, 2024
a similarly frustrating experience is if you
npm uninstall
a package in the wrong directory. npm will also go ahead and build apackage-lock.json
and an emptypackage.json
.desired behavior would be for npm to warn you that no
package.json
file was found in that directorypat-in-a-hat commentedon Nov 8, 2024
this appears to be easily reproducible.
Steps To Reproduce
mkdir temp
cd temp
npm uninstall is-even
A
package.json
andpackage-lock.json
file will now be presentExpected Behavior
When a user runs step 3
npm
should warn that nopackage.json
file is present then endKyle-Ignis commentedon Nov 8, 2024
Kyle-Ignis commentedon Nov 8, 2024
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 commentedon Nov 15, 2024
@Kyle-Ignis Appreciate if you can raise the PR.
fix: issue npm#7892 - fix for npm install creating directories and em…
fix: issue npm#7892 prevent package-lock.json creation without packag…
npm install
writespackage-lock.json
even after failing to findpackage.json
#6986 as a duplicate of this issuenpm install
writespackage-lock.json
even after failing to findpackage.json
#6986