如何在不使用 npm 的情况下安装 node.js 模块?

Posted

技术标签:

【中文标题】如何在不使用 npm 的情况下安装 node.js 模块?【英文标题】:How to install a node.js module without using npm? 【发布时间】:2011-08-12 18:53:36 【问题描述】:

有不少模块在on node's github page 中列出,但未在 npm-registry 中发布。这些模块不能使用 npm 安装。

从 Git 克隆这些 nodejs 模块后,安装这些模块的正确方法是什么?

【问题讨论】:

【参考方案1】:

您需要从 github 下载他们的源代码。找到主文件,然后将其包含在您的主文件中。

一个例子可以在这里找到>How to manually install a node.js module?

通常你需要找到源并通过 package.json 文件。在那里你可以找到哪个是主文件。这样您就可以将其包含在您的应用程序中。

在您的应用中包含 example.js。将其复制到您的应用程序文件夹中,并将其附加到主 js 文件的顶部。

var moduleName = require("path/to/example.js")

【讨论】:

是否可以从外部 URL(如var myscript = require("http://www.mywebsite.com/myscript.js"))导入脚本? require 函数似乎不适用于外部 URL。 require 实际上是同步的,所以不,它不适用于外部 URL。 注意:需要去掉github库后面的-master;如将xxx-master 更改为xxx【参考方案2】:

这些模块无法使用 npm 安装。

实际上,您可以通过指定本地路径而不是名称来安装模块。只要存储库有一个有效的package.json 文件,它就可以工作。


输入npm -l,就会出现一个漂亮的帮助:

CLI:

...
install     npm install <tarball file>
                npm install <tarball url>
                npm install <folder>
                npm install <pkg>
                npm install <pkg>@<tag>
                npm install <pkg>@<version>
                npm install <pkg>@<version range>
                
                Can specify one or more: npm install ./foo.tgz bar@stable /some/folder
                If no argument is supplied and ./npm-shrinkwrap.json is 
                present, installs dependencies specified in the shrinkwrap.
                Otherwise, installs dependencies from ./package.json.

让我眼前一亮的是:npm install &lt;folder&gt;

就我而言,mrt 模块有问题,所以我做了这个(在一个临时目录中)

克隆仓库

   git clone https://github.com/oortcloud/meteorite.git

我在全局安装它:

   npm install -g ./meteorite

提示:

也可以通过以下方式将 repo 安装到本地 npm 项目:

     npm install ../meteorite

如果需要开发中的补丁,也可以创建一个到 repo 的链接:

     npm link ../meteorite

编辑:

现在 npm 还支持 github 和 git 存储库(请参阅 https://docs.npmjs.com/cli/v6/commands/npm-install),作为您可以运行的简写:

npm i github.com:some-user/some-repo

【讨论】:

最优秀的。我也遇到了一个模块的问题,所以我将它分叉并克隆到我的 web 项目的同级目录,将它的所有依赖项更新到最新版本,然后使用 'npm install ../ 将它安装到我的 web 项目中broken_module_name 这就像一个魅力。谢谢! +1 但如果我们没有 npm 的网络访问权限并且我们使用 npm install &lt;folder&gt; 安装的模块有无数其他 npm 依赖项,则它不起作用。 如果 npm 从全局(此处不确定)范围或本地范围内找到包到 node_modules 中,它不会尝试再次下载它。这意味着如果 repo 的所有直接依赖项都可以预先下载并复制到 node_module 文件夹中,那么它将起作用。【参考方案3】:

从github下载代码到node_modules目录

var moduleName = require("<name of directory>")

应该这样做。

如果模块有依赖并且有package.json,打开模块并输入npm install。

希望对你有帮助

【讨论】:

如果主文件名为index.js,我认为这段代码有效【参考方案4】:

您可以将模块直接克隆到本地项目中。

启动终端。 cd 进入你的项目,然后:

npm install https://github.com/repo/npm_module.git --save

【讨论】:

我正在寻找的答案。 包改了怎么办,怎么更新到最新版本? ATM,我找到的唯一“解决方案”是从node_modules中删除fodler,删除package.json条目并重新添加,这很痛苦......【参考方案5】:

一步一步:

假设您正在从事一个项目use-gulp 使用(requires)node_modulesgulpgulp-util。 现在您想对gulp-util lib 进行一些修改并使用您的use-gulp 项目在本地对其进行测试... fork gulp-util github\bitbucket 等项目。 切换到您的项目:cd use-gulp/node_modules 克隆 gulp-utilgulp-util-dev : git clone https://.../gulp-util.git gulp-util-dev 运行npm install 以确保gulp-util-dev 的依赖关系可用。 现在你有一个gulp-util 的镜像gulp-util-dev。在您的use-gulp 项目中,您现在可以将:require('gulp-util')...; 调用替换为:require('gulp-util-dev') 以测试您对gulp-util-dev 所做的更改

【讨论】:

以上是关于如何在不使用 npm 的情况下安装 node.js 模块?的主要内容,如果未能解决你的问题,请参考以下文章

Node.js:如何在不上传文件列表的情况下检查文件夹是不是为空

应该打字吗?如果不是,如何在不破坏用户的情况下在 npm install 上触发类型安装?

如何在不使用 node.js 的情况下添加标准反应应用程序 [关闭]

NPM - 如何在不更新或添加 package.json 中描述的包的情况下安装新包

如何在不导致停机的情况下部署 Node.js 应用程序

如何在 Ubuntu 上停止 Node.js 并在不停止的情况下注销 [重复]