npm install module in current directory

后端 未结 7 1243
眼角桃花
眼角桃花 2020-12-12 21:00

When I run:

npm install my-app

The app is installed into node_modules/my-app/...

I also tried

npm install -g my-app         


        
相关标签:
7条回答
  • 2020-12-12 21:28

    You ought to have a package.json in your current directory.

    Then write npm install <module_name> --save-dev or npm install <module_name> --save and it will install to the node_modules directory

    0 讨论(0)
  • 2020-12-12 21:31

    npm install installs packages either locally or globally:

    • Locally: npm looks for an existing folder called node_modules in the current directory and creates a folder for each package you install in that folder. If it can't find an existing node_modules folder here, it then looks through the current directory's ancestors until it finds one. If it can't find one, it creates one in the current directory.
    • Globally: if you use the -g (global) option, the package is installed in a global location. This location varies per Linux distribution, but /usr/local/lib/node_modules/packagename is one example. CentOS7 uses /usr/lib/node_modules/packagename.

    You should only use -g when the package is something you'd want to use as a command.

    Just like how global variables are kind of gross, but also necessary in some cases, global packages are important, but best avoided if not needed.

    In general, the rule of thumb is:

    1. If you’re installing something that you want to use in your program, using require('whatever'), then install it locally, at the root of your project.
    2. If you’re installing something that you want to use in your shell, on the command line or something, install it globally, so that its binaries end up in your PATH environment variable.

    npm will not install a package's files directly into the current directory.

    However, this is actually a good thing. It keeps dependencies' files separate from your app, and Node automatically searches the node_modules folder when you require something.

    0 讨论(0)
  • 2020-12-12 21:31

    This is how you can install a module to your current directory:

    npm i --prefix ./ my-app

    As others have said, the proper way is to configure your project via package.json

    0 讨论(0)
  • 2020-12-12 21:35
    pack=$(npm pack <package>) ; tar xzvf ${pack} --strip-components=1 ; rm ${pack} ; npm i
    
    0 讨论(0)
  • 2020-12-12 21:38

    As @dalu said, if you want to have local packages, you'll need a package.json file.

    But to create the package.json file, you will have to initialize npm by running npm init.

    You can then use npm install <module_name> --save[-dev].

    0 讨论(0)
  • 2020-12-12 21:46

    I think the real question, what I and the OP would want, is to install my-app, like you would install an application , i.e. Install a top level application, that I am going to "use" as an application and not "require" as a module.

    The fact that npm installs one level down from my application directory, is a purely aesthetic objection by new npm users.

    When I started using npm (not so long ago), I solved it by having a git project as an installer, clone the git, run the install script, but now I am used to it and it does not bother me to have the app in the "wrong" folder any more.

    Just setup some .sh, .bat or short cuts in the right place and your users, won't notice.

    0 讨论(0)
提交回复
热议问题