0%

Node.js 常用命令

Node.js 安装

# 安装 node.js v10.12.0
$ wget -qO- https://deb.nodesource.com/setup_10.x | sudo -E bash -
$ sudo apt-get install -y nodejs

# 要从 npm 编译和安装原生插件,您可能还需要安装构建工具
$ sudo apt-get install -y build-essential 

# 检查当前 node.js 版本
$ node -v      
v11.14.0

# 检查当前 npm 版本
$ npm -v
6.9.0

$ sudo apt-get upgrade nodejs    ## 更新 node.js
$ sudo apt-get remove nodejs     ## 卸载 node.js

# 更新 npm
$ npm i -g npm

参考:官方文档:通过包管理器方式安装 Nodejs

Node.js 版本升级

npm 上有一个开源包叫 n,是专门用来管理 node.js 版本的。

  1. 安装 n 模块(-g 表示全局环境下安装)。

    npm install -g n
  2. 升级 node 到最新稳定版本。

    <!–hexoPostRenderEscape:

    $ sudo n stable

# 你也可以指定 node 版本
$ n v10.11.0
$ n 10.11.0
:hexoPostRenderEscape–>

  1. 检查当前 node 版本

    <!–hexoPostRenderEscape:

    $ node -v # 查看 node 版本
    v11.14.0

$ npm -v # 显示版本,检查 npm 是否正确安装
6.9.0

$ npm version # 显示完整信息
{ npm: ‘6.4.1’,
ares: ‘1.14.0’,
cldr: ‘33.1’,
http_parser: ‘2.8.0’,
icu: ‘62.1’,
modules: ‘64’,
napi: ‘3’,
nghttp2: ‘1.33.0’,
node: ‘10.10.0’,
openssl: ‘1.1.0i’,
tz: ‘2018e’,
unicode: ‘11.0’,
uv: ‘1.23.0’,
v8: ‘6.8.275.30-node.24’,
zlib: ‘1.2.11’ }
:hexoPostRenderEscape–>

NPM 的常用命令

npm 是 Node.js 默认的包管理器,通过 npm 命令可以下载并管理第三方模块(包)。

查看帮助

npm helpnpm h

安装模块

npm install <Module Name>
npm i <Module Name> # 简写

# 配置好 package.json 文件后,批量安装所有模块
npm install

# ⭐️⭐️⭐️ 推荐安装包时,添加 --save 命令
# 同时将安装包信息记录到 package.json 的 dependencies 字段(自动更新 package.json 文件)
npm i --save <Module Name> 
npm i -S <Module Name>

# 开发阶段,记录到 package.json 的 devDependencies 字段
npm i --save -dev <Module Name> 

# 示例:
npm install express    # 安装 express 模块
npm i uuid             # 安装 uuid 模块
npm i moment           # 安装 moment 模块(时间处理模块)
npm i node-forge       # 安装 node-forge 模块(TLS)
npm i mocha            # 安装 mocha 模块(测试框架)
npm i body-parser --save # 安装消息体解析模块
npm i sqlite3 --save     # 安装 sqlite3 进程内数据库
npm i node-readability --save # 安装 HTML 页面转化模块
npm i ejs --save        # 安装渲染模版引擎
npm i http-errors --save  # Create HTTP errors for Express, Koa, Connect, etc. with ease.
npm install dotenv --save # 环境变量配置框架

指定安装版本

# 格式
npm install 包名@版本号

# 示例
npm install jqurey@1.8.2

在全局环境中安装模块(-g:启用 global 模式)

⚠️

  • 全局模式并不是将一个模块包安装为一个全局包的意思,它并不意味着可以从任何地方通过 require() 方法引用到它。
  • -g 是将一个包安装为全局可用的可执行命令
  • 如果包中含有命令行工具,那么需要执行全局安装。
  • 要全局安装的包一般是工具,即你要在命令行里运行的程序,比如 gulp-cli 包。
npm install -g <Module Name>

# 全局安装 express
npm install -g express

# 使用脚手架快速初始化 Egg.js 项目
npm i egg-init -g
egg-init egg-example --type=simple
cd egg-example
npm i

# 全局安装 Express 生成器
sudo -s npm install -g express-generator
# 使用 Express 生成器创建应用(oauth)
express oauth
cd oauth
npm install
npm start

卸载模块

# 查看 uninstall 用法
npm uninstall -h  
npm uninstall [<@scope>/]<pkg>[@<version>]... [--save-prod|--save-dev|--save-optional] [--no-save]

aliases: un, unlink, remove, rm, r

# 使用示例
npm uninstall <Module Name>

npm uninstall express    # 删除指定的模块
npm uninstall -g express # 全局卸载 express
npm un md5               # 移除 md5 模块
npm un node-rsa          # 移除 node-rsa 模块

显示当前目录下安装的模块

npm list
npm ls # 分析包,分析出当前路径下能够通过模块路径找到的所有包,并生成依赖树。

npm list -g

显示模块详情

npm show <Module Name>

npm show express

升级模块

npm update        # 升级当前目录下的项目的所有模块
npm update express     # 升级当前目录下的项目的指定模块
npm update -g express  # 升级全局安装的express模块

初始化生成包描述文件(package.json 文件)

创建一个新的 Node 项目的步骤:创建一个文件夹,然后运行 npm init 来创建一个 package.json 文件:

$ mkdir example-project
$ cd example-project
$ npm init
This utility will walk you through creating a package.json file.
It only covers the most common items, and tries to guess sensible defaults.

package name: (node)
version: (1.0.0)
description:
entry point: (testCrypto.js)
test command:
git repository:
keywords: arlingbc
author:
license: (ISC)

你也可以使用默认值创建 package.json 文件:npm init -y

package.json 部分片段示例:

# dependencies 配置当前程序所依赖的其他包
# dependencies 是项目运行所依赖的模块
"dependencies": {
  "async": "^2.6.2",
  "bcrypt": "^3.0.6",
  "egg": "^2.21.1",
  "egg-scripts": "^2.11.0",
  "egg-view-nunjucks": "^2.2.0",
  "moment": "^2.24.0",
  "node-forge": "^0.8.2",
  "scrypt": "^6.0.3",
  "uuid": "^3.3.2"
},
# devDependencies 配置当前程序所依赖的其他包,只会下载模块,而不下载这些模块的测试和文档框架
# devDependencies 项目开发所需要的模块
"devDependencies": {
  "autod": "^3.1.0",
  "autod-egg": "^1.0.0",
  "egg-bin": "^4.12.3",
  "egg-ci": "^1.11.0",
  "egg-mock": "^3.22.2",
  "eslint": "^4.11.0",
  "eslint-config-egg": "^6.0.0",
  "webstorm-disable-index": "^1.2.0"
},

# ^ 表示第一位版本号不变,后面两位取最新值。
# ~ 表示前两位版本号不变,最后一位取最新值。
# * 表示全部取最新值,即使用最新版本。
# 配置好该文件后,输入 npm install 命令系统就会按以上约定自动安装模块

注册包仓库账号

$ npm adduser

上传包文件

$ npm publish <floder> # 上传包文件到官方仓库

$ npm publish .

管理包权限

通常,一个包只有一个人拥有权限进行发布。

$ npm owner ls <package name>
$ npm owner add <user> <package name>
$ npm owner rm <user> <package name>

node 命令行权限问题

运行 npm 命名时,提示 “permission denied…”,解决方法是设置允许不安全权限:

npm config set unsafe-perm=true

# 如果以上方法无效,不妨在命令前加 sudo 提升权限
sudo npm install -g eslint

npm 脚本

npm 脚本可以说是一个微型脚本调用工具,你可以用它构建客户端包、执行测试、生成文档等。
启动服务器的命令(node index.js)可以保存为 npm 脚本,打开 package.json 文件,在 scripts 里添加一个 start 属性:

"scripts": {
  "test": "echo \"Error: no test specified\" && exit 1",
  "start": "node index.js"
},

启动程序:npm start
指定端口:PORT=3001 npm start

欢迎关注我的其它发布渠道