170

I have the following directory structure:

/some_project
    source.js
    package.json

I would like to install the dependencies for some_project. I know I could cd into some_project and then run npm install

But I was wondering if it's possible without changing the directory ? Something like

npm install some_project/package.json 
Florin
  • 2,741
  • 4
  • 18
  • 26

5 Answers5

406

You can use the npm install <folder> variant with the --prefix option. In your scenario the folder and prefix will be the same:

npm --prefix ./some_project install ./some_project
coudy
  • 12,480
  • 5
  • 20
  • 25
50

Update: Since the --prefix option exists, I now vote for @coudy's answer to this question. Original answer below:

No, npm will always install in the current directory or, with -g, in the system wide node_modules. You can kind of accomplish this with a subshell though, which won't affect your current directory:

(cd some_project && npm install)

The parentheses makes it run in a subshell.

Linus Thiel
  • 37,636
  • 9
  • 103
  • 101
1

On windows 10 using powershell the only thing that worked for me without all the problems and edge-cases mentioned in this blog post was this

Start-Process -Wait -FilePath "npm" -ArgumentList "install" -WorkingDirectory $web_dir
bottlenecked
  • 1,959
  • 2
  • 21
  • 30
1

Create a package.json in the root directory with the following contents:

{
    "dependencies": {
        "helloworldprojectname": "file:hello\\world"
    }
}

Then call this to install:

npm install --prefix ./hello/world

It installs ./hello/world/node_modules using ./hello/world/package.json.

(Windows 10, Node v10.16.0, npm 7.6.1)

Aralox
  • 1,369
  • 1
  • 22
  • 44
0

On Windows 10 I couldn't get --prefix to work, so I had to cd and execute it.

cd PATH_TO_FOLDER && npm install 
Yoannes Geissler
  • 671
  • 1
  • 9
  • 15