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

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

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

【问题讨论】:

    标签: node.js packages npm


    【解决方案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 所做的更改

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-05-30
      • 2017-01-29
      • 2010-12-15
      • 2020-01-04
      • 2013-10-21
      • 2023-02-17
      相关资源
      最近更新 更多