无命令安装节点扩展

时间:2015-04-21 11:21:33

标签: javascript node.js

我正在公司实习 我需要创建一个节点服务器 我在计算机上安装了节点(Windows),我应该安装一些插件,如:
- nodejs-webpack
- 颜色
- uglify

通常我需要输入如下命令:npm install "theModule"
但该软件无法访问互联网(由于公司限制),支持服务无法授权该软件(或不想要)。

我可以用其他方式安装模块吗? (例如,从Google下载并在正确的文件夹中下载幻灯片档案。)


如果答案是否定的,你知道如何解决这个安全问题吗?

3 个答案:

答案 0 :(得分:5)

您需要一个私有的npm存储库。

看看这个答案:

can you host a private repository for your organization to use with npm?

答案 1 :(得分:2)

我发现了!

仅举例来说,我们将安装'nodejs-websocket':
1)您只需下载here 2)将文件放入Node的目录(对我而言,它是“C:\ Program Files \ nodejs \ node_modules \ npm \ node_modules”)
3)在.js文件中添加以下行:var ws = require("C:/Program Files/nodejs/node_modules/npm/node_modules/nodejs-websocket/")

做完了!谢谢大家:D

答案 2 :(得分:0)

我将此添加为对您自己的答案的评论,但我认为我应该添加一个更好解释的真实答案。

通常,当您运行npm install package-name时,npm会将程序包安装到您当前所在目录中的node_modules目录中。因此,如果您的应用位于C:\code\my-app,那么您可以cd进入该目录并运行npm install package-name。如果它不存在,这将在node_modules创建一个C:\code\my-app\node_modules目录。然后,它会package-nameC:\code\my-app\node_modules\package-name安装到该目录中。

只要模块位于应用程序的node_modules目录中,就可以在代码中使用该模块,而无需输入大的长文件路径。

var ws = require('nodejs-websocket');

手动安装模块的地方是全局node_modules目录。如果你npm install -g package-name,那就是npm安装模块的地方。安装npm时,全局node_modules目录将添加到系统路径中。换句话说,您在其中安装的任何模块都可以从命令行访问,就像任何其他命令一样。例如:

npm install -g bower

这会将“bower”包安装到全局npm模块目录中。然后可以将Bower作为命令行工具进行访问。例如:

bower install angularjs

全局目录更适用于此类工具,而不适用于您打算在代码中使用的模块。从技术上讲,您可以通过在require调用中包含完整路径来从任何地方获取模块,但标准做法是将其放在应用程序根目录的node_modules目录中,并且然后用它的名字而不是完整的路径来要求它。


编辑:以下是您可能希望利用的另一个提示。

当您正常安装带有npm install package-name的模块时,您的应用程序通常在其根目录下有一个package.json文件。如果是,则可以执行npm install package-name --save,npm会将package-name模块添加到应用的package.json文件中的列表中。一旦模块列在您应用的package.json文件中,它就会被称为您应用的“依赖关系”,因为它基本上表示您的应用取决于 package-name

通常,如果package.json中列出了依赖项,则可以完全删除应用程序的node_modules目录,然后只需从应用程序的根目录中运行npm install,npm将自动安装所有目录它在应用程序的package.json文件中列出的依赖项。由于您的企业防火墙不允许自动下载模块,因此您无法获得该优势。但是,遵循相同的惯例仍然是一种好习惯。

您可以创建package.json文件的技巧是手动将依赖项安装到应用程序的node_modules目录中。获得应用程序所需的模块后,您可以通过运行package.json指示npm为您的应用创建npm init文件。它将引导您完成一些小提示,以填写您的package.json文件,其中包含有关您的应用的详细信息。然后,它会窥探您的node_modules目录,看看您是否在安装package.json文件之前已经安装了任何模块。如果找到,它会自动将它们添加到它创建的package.json文件的依赖项字段中:D

使用适当的package.json,即使您的node_modules目录被删除,您也总会有一个很好的整洁列表,列出您的应用程序需要哪些依赖项。通常人们将他们应用的node_modules目录添加到他们的.gitignore文件中,只检查package.json文件。这样,它们就不会将它们的依赖项存储在源代码管理中,但它们仍然可以通过从应用程序目录中运行npm install来轻松地安装到克隆它的新机器上。在您的情况下,您可能只想将node_modules添加到源代码控制中,因为您无法让npm自动安装依赖项。