mik*_*1aj 14 directory-structure package node.js npm
我最近开始玩node.js,但是我迷失了大量不同版本的节点,npm,nvm和其他软件包.我不知道全局安装什么以及本地安装了什么(如果在本地,那么包如何知道它们可以使用哪些版本的节点?).
我想总结一下不同安装选项的作用.具体来说:
nvm时apt-get,make install或使用其他方式安装节点的位置?nvm改变我~/.profile而不是在一个系统可识别的bin文件夹中安装自己?nvm可以安装不同版本的节点 - 我为什么要这样做?我可以在本地安装它们,对吗?npm安装包在哪里?我看到它检查了包的aganist版本的Node,当节点升级时这些包会发生什么?npm,nvm和nave?编辑:有很多的安装节点的方式在这里,这让我更糊涂了......
Igo*_*lyk 18
当我使用nvm,apt-get,make install或使用其他方式时,节点安装在哪里?
apt-get按照Ubuntu约定在文件系统上安装所有软件,而不仅仅是节点,在那里存储二进制文件,man文件,共享文件,日志等.但是,使用apt-get你将只有特定版本的节点由分发版本周期决定.如果有可用的更新,则会安装它们apt-get update; apt-get upgrade但是,某些应用程序的最新版本在进入分发之前将无法使用.例如,节点v0.xy可能无法使用,直到Ubuntu 13.10获得的唯一方法是手动安装它.apt-get或其他系统包管理器的好处是它为您管理更新和包删除.它将有关软件包的所有数据存储在自己的数据库中.您始终可以删除节点,apt-get remove node也就是删除节点.
make install手动安装包,但它被认为是有害的.永远不要使用make install主要是因为您无法轻松删除包,您必须阅读Makefile并手动删除它安装的所有文件.在您想要使用的情况下,make install始终checkinstall可用.它是一个创建本机包并将其注册到系统的软件.当您决定删除软件包时,可以使用一个命令而不是多个命令来执行此操作.维基链接 ; 关于checkinstall的Ubuntu指南
现在nvm脚本是一个node version manager.它非常有用且易于使用.它允许您在计算机上并行安装和使用多个版本的节点.它不会从源代码编译节点,make install因此它非常快.它不依赖于您的分发版本周期,因此您可以访问此刻可用的所有节点版本.nvm下载预编译的二进制文件,非常适合一般用途.它将节点文件存储在本地自己的文件夹中,因此,如果您想比较不同节点版本之间的内容,则很容易做到.
在本地安装节点是个好主意吗?
如果在本地你的意思是使用nvm那么它对开发和测试非常有用.不确定从源代码安装它或使用nvm预编译的二进制文件之间的生产性能影响和好处.我使用nvm进行开发,并从生产中的源代码安装.但是,如果有人能够进一步解释这个问题,我将很乐意了解更多信息.
为什么nvm会改变我的〜/ .profile而不是将其自身安装在一些系统可识别的bin文件夹中?
因为nvm不是可执行文件.它是一组bash函数,由shell提供,可以单独使用.你可以调用nvm_ls和nvm_ls_remote其他没有主脚本的人来源你的shell.主脚本的作用是解析命令行参数,并在例如`nvm_ls_remote'的情况下打印输出.
在〜/ .profile中添加以下行
[[ -s /home/USERNAME/.nvm/nvm.sh ]] && . /home/USERANME/.nvm/nvm.sh # This loads NVM
Run Code Online (Sandbox Code Playgroud)
将所有函数加载到shell中
我看到nvm可以同时安装不同版本的节点 - 为什么我要这样做呢?我可以在本地安装它们,对吗?
您可以使用make install或在本地安装它们,checkinstall但您必须为它们创建别名,如node_0.8.1,node_0.8.2,node_0.10.1等.您必须管理新别名,安装所有软件包,以防万一你不需要他们自己.这些是繁琐乏味的任务,有时可能容易出错.nvm为您免费完成所有这些任务.
您希望这样做以在不同版本的节点下测试您的应用程序.例如,你很好并在v0.8下测试但你想使用v0.10.3的新功能你是如何做到的?您必须下载源代码,编译,创建别名并运行您的应用程序.你可以只使用nvm install 0.10.3并运行你的应用程序.有时您必须支持多个版本的节点.例如,某些托管环境未与最新版本保持联系且仅具有v0.6.使用您的服务器应用程序的客户端可能会遇到此版本特有的错误.当你修复bug时,你必须先重现它.使用nvmv0.6的安装是一行半分钟.您可以轻松地检查所需的所有版本.在不同版本下测试您的代码,并确保您不错.
npm安装包在哪里?我看到它检查了包的aganist版本的Node,当节点升级时这些包会发生什么?
如果您使用nvm全局安装的软件包,则-g选项与相关节点版本相关联.当您在版本之间切换时,nvm use 0.x您必须再次安装软件包或使用nvm copy-packages <version>当前版本中的软件包.如果包是在本地安装的,那么它取决于.package.json应包含有关应用程序依赖关系的信息.如果它显示节点:'0.8'并且你刚刚更新到0.9,你可能会遇到麻烦.例如,process.nextTick与0.6相比,最新版本中的行为发生了变化.所以要小心.
在哪些情况下,最好使用全局或本地安装?我应该把我的包装放在哪里(默认情况下放在哪里?)
这取决于.nvm在我看来,发展是优越的.对我来说,方便又简单.对于生产,使用未针对您的系统优化的预编译二进制文件可能会有一些性能影响.最好将此问题作为一个单独的问题,以便具有相关经验的人能够回答.
npm,nvm和nave有什么区别?
npm是 node package manager- > 链接它包含由其他人开发的userland包.这些包不是节点核心的一部分.npm用于发布代码和依赖关系管理.如果您的应用需要其他人开发的其他应用,则可以通过npm发布它.
nvm是node version manager它一个完全独立的东西.它使您能够在同一台计算机上轻松切换节点版本,并管理$PATH环境变量中的所有更改.
考虑nvm作为操作系统的更新管理器和npm该系统的应用程序管理器.嗯,这种比较并不精确,但我想到了
nave基本上是相同的,nvm但它是一个可执行文件,nvm而是一个源自shell的脚本.每个系统都有自己的好处.您可以就其用例和差异单独提出问题.
我的答案不是100%完整,包含很多主观的个人意见.但是,我希望我至少会更清楚地说明一些观点,以便您可以继续处理其他更具体的问题.顺便说一下,这个问题列表可以作为单独的问题提出.我相信stackoverflow会在单独询问特定问题时提供最佳结果,并且更多具有相关经验的人可以做出贡献.
| 归档时间: |
|
| 查看次数: |
20534 次 |
| 最近记录: |