Node.js和npm

1. Node.js

Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境。 

Node.js 使用了一个事件驱动、非阻塞式 I/O 的模型,使其轻量又高效。 

Node.js 的包管理器 npm,是全球最大的开源库生态系统,包含在node.js安装包中,安装node.js时会被一起安装。


Windows或Mac下载安装Node.js

Centos 7安装node.js



2. NPM

npm 是世界上最大的软件注册表,每星期大约有 30 亿次的下载量,包含超过 600000 个 包(package) (即,代码模块)。包的结构能够轻松跟踪依赖项和版本。

npm 由三个独立的部分组成:

  • 网站:查找包(package)、设置参数以及管理 npm 使用体验的主要途径。
  • 注册表(registry):是一个巨大的数据库,保存了每个包(package)的信息。
  • 命令行工具 (CLI):通过命令行或终端运行。开发者通过 CLI 与 npm 打交道。


npm设置国内镜像

## 设置阿里云npm镜像
npm config set registry https://registry.npmmirror.com
## 验证
npm config get registry

不推荐使用cnpm,原因有三:

  • 项目脚本默认是以npm启动,而依赖模块是cnpm安装,在极少情况下可能会导致发生一些错误
  • 笔者亲身体会,同一项目在Mac和Win之间使用时,有极少情况会发生一些莫名奇妙的错误,使用npm则正常;
  • cnpm经常无法生成package-lock.json文件
  • 某些资源或依赖包无法下载,详见:https://segmentfault.com/q/1010000015233708

但是:npm设置了国内镜像后,也要比cnpm慢非常多;频繁执行npm install的场景,推荐使用cnpm。


恢复默认源:(实测在linux上默认源比镜像快)

npm config set registry https://registry.npmjs.org/



1> 常用命令

## 查看npm版本
npm -v
## 查看已安装的包
npm list -g --depth 0



2> 初始化,创建项目描述文件

npm init

此命令会在当前目录生成一个package.json文件,package.json 文件记录项目的描述信息:项目作者、项目描述、项目依赖哪些包、插件配置信息,一般情况下此文件是必须要有的,方便后续的项目添加和其他开发人员的使用。

package.json文件内容详解:

name 项目名称

version 项目的版本号

description 项目的描述信息

main 项目入口文件,默认值是根目录下的index.js

scripts 指定了运行脚本命令的npm命令行缩写,比如start指定了运行npm start时,所要执行的命令

entry point 项目的入口文件

test command 项目启动时脚本命令

git repository 如果你有 Git 地址,可以将这个项目放到你的 Git 仓库里

keywords 关键词

author 作者叫啥

license 项目要发行的时候需要的证书,平时玩玩忽略它



3> 安装模块

npm install packagename   ## 默认安装最新版
npm install packagename 0.0.1   ## 指定安装版本


在安装 npm 包时,有两种命令参数可以把包信息写入 package.json 文件:npm install --save 和 npm install –save-dev ,如:

npm install --save-dev gulp-uglify

--save 会把依赖包名称添加到 package.json 文件 dependencies 键下

--save-dev 则添加到 package.json 文件 devDependencies 键下,如:

{
 "dependencies": {
    "vue": "^2.2.1"
  },
  "devDependencies": {
    "babel-core": "^6.0.0",
    "babel-loader": "^6.0.0",
    "babel-preset-latest": "^6.0.0",
    "cross-env": "^3.0.0",
    "css-loader": "^0.25.0",
    "file-loader": "^0.9.0",
    "vue-loader": "^11.1.4",
    "vue-template-compiler": "^2.2.1",
    "webpack": "^2.2.0",
    "webpack-dev-server": "^2.2.0"
  }
}

dependencies是运行时依赖:

dependencies 下的模块,是发布后要依赖的模块,譬如像jQuery库或Angular框架类似的,开发完后后肯定还要依赖它们,否则就运行不了。


devDependencies是开发时的依赖:

devDependencies 下列出的模块,是我们开发时用的,比如 我们安装 js的压缩包gulp-uglify 时,我们采用的是 “npm install –save-dev gulp-uglify ”命令安装,因为我们在发布后用不到它,而只是在我们开发才用到它


正常使用npm install时,会同时下载dependencies和devDependencies中的模块,当使用npm install –production或者注明NODE_ENV变量值为production时,则只会下载dependencies中的模块。


4> 删除模块

npm uninstall 模块:删除模块,但不删除模块留在package.json中的对应信息

npm uninstall 模块 --save 删除模块,同时删除模块留在package.json中dependencies下的对应信息


模块 --save-dev 删除模块,同时删除模块留在package.json中devDependencies下的对应信息



注意:对模块的安装、使用,请务必参考npm官网; 网上很多安装方法都很过时;打开npm官网,搜索欲安装和使用的模块,然后就能看到其最新官方的安装方法。



常用模块:





举报

© 著作权归作者所有


0