51

I downloaded a theme and it has a package-lock.json file but no package.json file. Is there a way I can generate the package.json from the package-lock.json file. How do I install the node modules with just the package-lock.json file. Is there a way to do that?

4
  • Have you tried npm install? Commented Apr 26, 2018 at 10:26
  • 1
    I have but it gives me no package.json file found Commented Apr 29, 2018 at 7:01
  • 1
    Something not right with the theme because package.json is necessary to install other dependencies.. what’s the url of the theme ? Commented May 26, 2018 at 16:38
  • possible duplicate of stackoverflow.com/questions/53858814/… Commented Feb 8, 2019 at 20:32

5 Answers 5

43
Warning: Do not attempt before reading comments below & backup package-lock.json.

Install the latest npm with npm install -g npm

Run npm init and respond to the questions.

The above command will generate a package.json and include the existing packages listed in package-lock.json

Sign up to request clarification or add additional context in comments.

10 Comments

I tried it with the latest npm (6.4.1) and it doesn't work. It only creates a package.json file without any dependencies listed.
@Amade Interesting I was able to recover my packages with that command :/
npm 6.6.0. package.json does not include the existing packages listed in package-lock.json
6.9.0 and it is still not working, neither is npm ci - what is the point of this file's use in CI if it seems to be ignored ?
wiped out package-lock.json
|
30

I think I figured it out.

I don't think npm init can draw from package-lock.json. However it does seem to pull from what is already in your /node_modules. I believe this is why @Harry B's solution works for some and not at all for others.

For example, if you have just cloned your project which contains package-lock.json, no package.json, and empty/non-existence node_modules, npm init won't create any dependencies. However, if you run npm install pkg1 pkg2 pkg3 ... then run npm init it will create the dependencies in package.json.

2 Comments

This is a perfect explanation. I cloned a project to local that included node_modules but not package.json, so I couldn't rebuild and deploy. This was the perfect solution to my issue.
This is perfect comment on situation, but it has nothing to do with answering to the question: How do I install the node modules with just the package-lock.json file
22

https://pravnyadv.github.io/unpackage/ seems to work. Copy your package lock file text in, hit the button, copy out the text into a new package.json file.

5 Comments

That's the perfect solution
This should be selected as the valid answer.
pravnyadv.github.io/unpackage may return your package.json a single line. If so and you'd like to unfurl it a multi-line format, pipe it into jq with: echo '$your_package_blobl' | jq
I am late here, but the above link: pravnyadv.github.io/unpackage is not working anymore, do you have any alternatives?
8

package-lock.json file relies on the presence of a package.json file, So it's not possible to retrieve package.json (happy to be proved wrong).

So a possible solution left is to use a module like auto-install which is capable of generating package.json from the project file dependencies.

First, you need to install the module globally npm install -g auto-install. Then run npm init and answer the basic requirements.

Then, run auto-install in your project root directory. All the dependencies should reflect in package.json file.

**

Or Install node modules directly from package-lock.json

**

Run npm ci which bypasses a package’s package.json to install modules from a package’s lockfile.

More Information

2 Comments

npm ci always tells me "added 0 packages" and auto-install rewrote my package-lock.json, installed 2 random packages and stopped at "Watchers initialized"... node_modules folder was created but only with these 2 packages... Glad I had a lock backup :(
npm ci depends on package.json so it cannot be used with only package-lock.json present
1

i know this is a very old question, but all of these answers are sooo close to solving the problem, yet none of them worked for me because my node_modules folder was empty. they did however lead me to an answer, which is basically a combination of the previous suggestions.

preliminary boilerplate:

before doing anything, make a backup of your package-lock.json, just in case, and run npm install -g npm just in case you're wildly out of date, although this may not be necessary... i am using npm 8.19.4 because that's what it happens to be for me.

first:

run npm ci

this will generate the node_modules that you need, but then it will complain about a missing package.json and appear to fail. don't worry, that's fine.

second:

run npm init and answer all the questions, you can literally just hit enter to each one because whatever.

this will create your package.json, and now it should be fully populated with the node_modules that were generated by the first step.

third:

profit!

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.