Reputation: 2733
I've installed some packages via npm install $package
, without setting up a package.json
first.
Now I would like to create a package.json
file, but keep all installed packages as dependencies.
Simply running npm init
doesn't offer this option, can I achieve this automatically?
Upvotes: 35
Views: 19054
Reputation: 1
I faced this issue when I cloned a new project from bitbucket. I solved this by the following steps:
$ npm install
Upvotes: -3
Reputation: 46
I wrote a module called pkg-save.
You can have a try if your npm version is "2.x.x".
I haven't test in npm v3, so I don't know whether it is useful or not in npm v3.
Upvotes: 2
Reputation: 7862
UPDATE: With the launch of npm v3, this trick will create a lot of unwanted entries on your package.json
file. That's because module dependencies are now flattened, as @sunny-mittal pointed out.
npm
doesn't support that, as far as I know. You'd have do reinstall each package passing --save
to each one.
But, there's a workaround, if your're on Unix based systems. From inside your project root folder, with a package.json
file already created (npm init
, as you mentioned), run:
npm install $(ls node_modules/) --save
and it will reinstall the packages, and save them into package.json
as dependencies
.
Upvotes: 25
Reputation: 37075
Update January 2016
npm now supports this out of the box. I have npm version 3.5.2.
so with just a node_modules folder with underscore installed.
npm init --yes
then:
cat package.json
Contained within package.json:
"dependencies": {
"underscore": "^1.8.3"
},
Upvotes: 36
Reputation: 4486
Since NPM node_modules
is flat now and @Rodrigo's answere don't deal to well with that.
This is what I knitted together.
npm list --depth=0 | sed "1d" | sed -E "s/^[\`+-]+\s//" | sed -E "s/@(.*)$//"
This is essentially what ls node_modules
did before.
One-liner to save installed.
npm install $(npm ls | sed "1d" | sed -E "s/^[\`+-]+\s//" | sed -E "s/@(.*)$//") --save
I'm using
$ npm --version
3.5.3
Which lists like this.
$ npm list --depth=0
[email protected] /home/victor/x
+-- [email protected]
+-- [email protected]
+-- [email protected]
+-- [email protected]
`-- [email protected]
Upvotes: 4