Node.js 当前目录中的npm安装模块

Node.js 当前目录中的npm安装模块,node.js,npm,Node.js,Npm,当我跑步时: npm install my-app 该应用程序已安装到节点\模块/my app/ 我也试过了 npm install -g my-app 但这也不行 如何将模块直接安装到当前目录中?npm install安装软件包: 本地:npm在当前目录中查找名为node\u modules的现有文件夹,并为安装在该文件夹中的每个软件包创建一个文件夹。如果在此处找不到现有的节点\u modules文件夹,则会查找当前目录的祖先,直到找到一个。如果找不到,则在当前目录中创建一个 全局:如果

当我跑步时:

npm install my-app
该应用程序已安装到节点\模块/my app/

我也试过了

npm install -g my-app
但这也不行


如何将模块直接安装到当前目录中?

npm install
安装软件包:

  • 本地
    npm
    在当前目录中查找名为
    node\u modules
    的现有文件夹,并为安装在该文件夹中的每个软件包创建一个文件夹。如果在此处找不到现有的
    节点\u modules
    文件夹,则会查找当前目录的祖先,直到找到一个。如果找不到,则在当前目录中创建一个
  • 全局:如果使用
    -g
    (全局)选项,程序包将安装在全局位置。此位置因Linux发行版而异,但
    /usr/local/lib/node\u modules/packagename
    就是一个例子。CentOS7使用
    /usr/lib/node\u modules/packagename
当包是您想要用作命令的东西时,您应该只使用
-g

就像全局变量是一种总量,但也是必要的 在某些情况下,全局包很重要,但最好避免 需要

一般来说,经验法则是:

  • 如果您正在安装要在程序中使用的内容, 使用
    require('whatever')
    ,然后在 你的项目
  • 如果您正在安装要在中使用的内容 您的shell在命令行或其他地方全局安装,因此 它的二进制文件最终位于您的
    路径
    环境变量中
  • npm不会将包的文件直接安装到当前目录中


    不过,这其实是一件好事。它将依赖项文件与应用程序分开,并且。

    在当前目录中应该有一个
    包.json


    然后编写
    npm安装--save dev
    npm安装--save
    ,它将安装到node_modules目录中,正如@dalu所说的那样,如果您想要本地软件包,您需要一个
    package.json
    文件

    但是要创建
    package.json
    文件,您必须通过运行
    npminit
    来初始化npm


    然后你可以使用npm安装--save[-dev]

    我想真正的问题,我和OP想要的是安装我的应用程序, 就像你要安装一个应用程序,即。 安装一个顶级应用程序,我将 将“使用”作为应用程序,而不是将“要求”作为模块

    npm从我的应用程序安装一个级别 目录,是一种纯粹的美学 新npm用户的反对意见

    当我开始使用npm时(不久前),我用git解决了这个问题 作为安装程序进行项目,克隆git,运行安装脚本,但现在我已经习惯了 我再也不会把应用程序放在“错误”的文件夹里了

    只需在正确的位置设置一些.sh、.bat或捷径
    您的用户不会注意到。

    这是如何将模块安装到当前目录的方法:

    npmi——前缀。/my-app

    正如其他人所说,正确的方法是使用Windows7通过
    package.json

    配置项目。 我已将nodejs安装在另一个文件夹(c:\develope\nodejs)中,与安装时建议的文件夹(c:\Program Files\nodejs)不同 我对nodejs或npm完全陌生。我可能不是在说nodejs或npm语言。 安装nodejs之后。我必须在主nodejs文件夹中执行一些类似的命令

    npm init
    
    然后我要创建一个本地目录(比如c:\develope\nodejs\upload2s3),并创建一个nodejs包作为AWS lambda使用。为此,我进入本地目录(upload2s3),并尝试

    npm install aws-sdk
    
    尽管该命令的行为类似于它安装了东西,但它在我的upload2s3文件夹中没有任何作用,因为它是空的。 然后我在我的本地文件夹中尝试了这个

    npm init 
    
    这创建了一些package.json,可能只有少数其他文件 然后我试着

    npm install aws-sdk
    
    然后,它在我的本地文件夹(upload2s3)中创建了一个节点模块文件夹,并安装了aws sdk软件包。 它还更新了package.json文件

    {
      "name": "uploadtos32",
      "version": "1.0.0",
      "description": "",
      "main": "index.js",
      "scripts": {
        "test": "echo \"Error: no test specified\" && exit 1"
      },
      "author": "",
      "license": "ISC",
      "dependencies": {
        "aws-sdk": "^2.448.0"
      }
    }
    
    pack=$(npm-pack);tar xzvf${pack}--条带组件=1;rm${pack};npm i
    
    你的第一句话只略为正确。如果当前目录中没有
    /node\u modules/
    文件夹,则npm将搜索祖先目录,直到找到其中包含
    node\u modules/
    的目录。如果它在祖父母目录中找到一个,那么
    npm install packagename
    将在
    中安装
    packagename
    。/../node\u modules/
    。但是,如果它搜索文件树直到到达根目录,仍然没有找到任何
    node\u modules/
    文件夹,那么您是正确的,npm将在当前目录中自动生成该文件夹并在那里安装该软件包。谢谢。这是为我做的祖先目录的事情,我刚刚在本地创建了一个文件夹,瞧,谢谢!父文件夹遍历是我的问题。我正在创建节点应用程序,希望将服务器相关包与客户端相关包分开。所以,当我转到需要客户端包的文件夹时,npm insall--save将转到父节点_模块并添加到该位置。您可以只执行npminit;将在当前文件夹中创建package.json,然后运行npm安装将在当前文件夹中创建。谢谢@achedeuzot@chharvey我做了一个编辑--这足够清楚吗?这回答了您的问题已提出功能要求:最简单的解决方案!这是我想要的,但不起作用-测试用例:
    npmi--prefix./adolfintel/speedte