/ node.js

nodejs

关于安装:

Step1. 安装 NVM 并配置镜像源

1.1 Windows

安装 nvm-windows

nvm node_mirrornvm npm_mirror 这两条命令暂时在 Windows7 无法正常使用。所以需要我们手动修改文件,来设置镜像源:

// 修改文件 `~\AppData\Roaming\nvm\settings.txt` 
node_mirror: http://npm.taobao.org/mirrors/node/
npm_mirror: http://npm.taobao.org/mirrors/npm/

1.2 MacOS、Linux

安装 nvm

配置 Node.js 镜像源:nvm 默认 NVM_NODEJS_ORG_MIRROR 默认值为 https://nodejs.org/dist,天高路远。我们使用淘宝镜像源。

追加以下内容到 .zshrc 或者 .bashrc

export NVM_NODEJS_ORG_MIRROR=https://npm.taobao.org/mirrors/node

安装 Node.js

# 更新环境变量
source ~/.profile

Step2 安装 Node.js

lts/argon -> v4.* (-> N/A)
lts/boron -> v6.* (-> N/A)
lts/carbon -> v8.* (-> N/A)

nvm install lts/argon
nvm ls
nvm alias default lts/argon
node -v

Step3.使用 nrm 切换 npm 镜像源

npm config get registry
npm install -g nrm --registry=https://registry.npm.taobao.org
nrm ls
nrm use taobao
npm config get registry

Step4.备用的 cnpm、yarn、cyarn

npm install -g cnpm yarn cyarn --registry=https://registry.npm.taobao.org

实际使用中,发现npm + 淘宝镜像,安装 gulp-sass 失败,node-sass 从 github 下载会中断。

使用 cnpm 安装 gulp-sass,很流畅,node-sass 好像不是从 github 下载

cnmp 并不等于 npm+淘宝镜像 !!!
cnmp 并不等于 npm+淘宝镜像 !!!
cnmp 并不等于 npm+淘宝镜像 !!!

一般情况使用 cnpm 比较省心。

推荐使用优先级:cyarn > cnpm > yarn > npm。

  • yarn add: 在你当前的包里添加一个包来使用。
  • yarn init: 初始化包的开发环境。
  • yarn install: 安装 package.json 文件里定义的所有依赖。
  • yarn publish: 发布一个包到包管理器。
  • yarn remove: 从你当前包里移除一个未使用的包。
  • yarn global <add/bin/list/remove/upgrade> [--prefix]
npm install nodemon --global

cyarn global add nodemon

更新自身

npm -v
npm install npm -g

安装

npm install

npm install --save <package_name>

npm install --save-dev <package_name>
npm install <package_name> -D

[sudo] npm install -g <package_name>

卸载

npm remove --save <package_name>
npm remove --save-dev <package_name>
npm remove -g <package_name>

更新

npm outdated
npm update
npm update <package_name>

npm outdated -g --depth=0
npm install -g <package_name>

部署项目

npm install --production

版本号

  • 小波浪(~),保留主版本(第一个数字),比如 ^1.2.3 会匹配所有的1.x.x版本,不会升级到2.0.0。
  • 小尖尖(^),保留子版本(中间的数字),比如 ~1.2.3 会匹配所有的1.2.x版本,不会升级到1.3.0。

process.env.NODE_ENV !== 'production'

NVM 使用补充

临时指定 Node.js 版本

nvm use 0.12.0

设置默认 Node.js 版本

nvm alias default 0.12.0

直接运行特定版本的 Node

nvm run 5.1 --version
nvm run 5.1 server.js

或者,在当前终端的子进程中运行特定版本的Node

nvm exec 4.2.2 node --version

查看安装路径

nvm which 5.1

问题:服务器上如何同时运行多个基于不同版本Node.js的应用?

当我们需要在一台服务器上运行多个 Node.js 应用,并且每个应用使用不同版本的 Node.js 时,问题就产生了

方案一:使用 Node.js 的绝对路径

方案二:nvm use xxx;node server.js

从其他全局 Node.JS Tools 启动

有时,我们的服务是从其他全局 Node.JS 工具启动的,例如 forever 或 pm2 。那么可以首先找出 forever 的绝对路径:

which forever
/usr/local/bin/forever

然后执行:

/usr/local/bin/n use 0.10.41 /usr/local/bin/forever index.js

Daemon

既然是服务,就要运行在后台(Crontab 或者 Service)。那么 n 的使用就必须使用完整路径,例如:

/usr/local/bin/n use 0.10.41 index.js

assert 模块

assert模块是Node的内置模块,主要用于断言。如果表达式不符合预期,就抛出一个错误。该模块提供11个方法,但只有少数几个是常用的。

index.js

// Load configuration as JSON.
console.log( "JSON File:" );
console.log( require( "./data/1.json" ) );

// Load configuration as module.
console.log( "MODULE File:" );
console.log( require( "./config.js" ) );