如何在不使用 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 <folder>
就我而言,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 <folder>
安装的模块有无数其他 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
使用(require
s)node_modules
像 gulp
和 gulp-util
。
现在您想对gulp-util
lib 进行一些修改并使用您的use-gulp
项目在本地对其进行测试...
fork gulp-util
github\bitbucket 等项目。
切换到您的项目:cd use-gulp/node_modules
克隆 gulp-util
为 gulp-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 的情况下添加标准反应应用程序 [关闭]