【问题标题】:Install NodeJS package without npm在没有 npm 的情况下安装 NodeJS 包
【发布时间】:2016-09-06 09:02:41
【问题描述】:

问题:

如何在不使用 npm 的情况下手动安装 NodeJS 包(如 grunt-cli)?

环境:

  • 我已经安装了带有“Bash on Ubuntu on Windows”的 Windows 10。
  • 我已经在没有 Bash 的“普通”Windows 环境中成功安装了 NodeJS + Grunt。
  • NodeJS 安装在 bash 环境(Linux 子系统)
  • Grunt 尚未安装在(Linux 子系统)中

背景(为什么):

我同事的 grunt 任务是为 Ubuntu 环境开发的,并直接调用 bash 命令,这显然在“正常”Windows 环境中不起作用。这是一个实验,看看是否可以在“Windows 上的 Ubuntu 上的 Bash”中运行他的 grunt 任务,但是,我被困在 npm 尝试下载包的部分(Linux 子系统尚不支持网络库,所以curl 等命令不起作用)。

我希望通过手动将下载的版本从 Windows 环境(或 GitHub)复制到 Linux 子系统的“node_modules”目录中来“跳过”npm 的下载部分。

但是,我不知道如何配置 npm,因为添加了一个新包并且它现在可以使用该包。

【问题讨论】:

  • 我通过编辑 /usr/lib/node_modules/npm/node_modules/npmconf/config-defs.js 找到了我的问题的另一个解决方案,并将所有调用 os.networkInterfaces() 的行替换为硬编码对象(从本机 Windows 的 Nodejs 版本复制)。现在 npm 的行为似乎符合预期。

标签: node.js linux windows bash gruntjs


【解决方案1】:

你可以将所有需要的包和依赖项复制到 node_modules 目录中,它会正常工作。

我认为最好的方法是在“普通”计算机上使用 npm 安装软件包。然后将“普通”计算机上的 node_modules 目录复制到目标目录。

【讨论】:

  • 是的,我也是这么想的,但结果是cannot simply use Windows Explorer to copy the files。所以我以“Linux”方式复制了文件,现在节点可以访问这些文件。我的下一个问题是让 grunt 可执行。我在 Github 上找到了 grunt bin-script,但我不知道在 Linux 的文件系统中应该放在哪里。
  • 您可以在本地安装 grunt-cli(使用“npm install grunt-cli --save-dev”)。然后你可以在你项目的根目录下使用“./node_modules/.bin/grunt”来执行它。
  • 我找到了另一个解决方案。请参阅我的问题下方的评论,但我会接受您的回答,因为它回答了我原来的问题。
【解决方案2】:

预建安装器现已在官网的所有平台上可用

https://nodejs.org/en/download/

【讨论】:

    【解决方案3】:

    当 node_module 目录可用时,您无需安装模块。如果项目是从版本控制 (GIT) 存储库中克隆出来的,或者 node_modules 文件夹不可用,您应该运行以下命令

    npm install
    

    否则您需要手动将 node_modules 插入到您的项目中。 您也可以从其他计算机下载 node_modules 并将模块复制到您的项目中

    npm install --save <PACKAGE NAME>
    

    然后你可以在你的控制台文件夹中找到你的依赖模块。将这些文件复制到你的文件夹中。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-05-30
      • 1970-01-01
      • 1970-01-01
      • 2013-08-15
      • 2015-11-03
      • 2021-10-05
      • 1970-01-01
      相关资源
      最近更新 更多