Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境。
Node.js 使用了一个事件驱动、非阻塞式 I/O 的模型,使其轻量又高效。
Node.js 的包管理器 npm,是全球最大的开源库生态系统。
官方下载msi安装包,如:node-v12.8.0-x64.msi
MSI(Microsoft installer)文件是Windows installer的数据包,它实际上是一个数据库,包含安装一种产品所需要的信息和在很多安装情形下安装(和卸载)程序所需的指令和数据。MSI文件将程序的组成文件与功能关联起来。此外,它还包含有关安装过程本身的信息:如安装序列、目标文件夹路径、系统依赖项、安装选项和控制安装过程的属性。
安装步骤如下:
1、下载node安装包
在官网找对应的版本进行下载以往的版本 | Node.js
2、我以12.8.0为例
3、下载下来后双击进行安装
4、安装完成后,打开cmd命令窗口,输入node -v就可以看到版本信息
5、查看npm版本,npm -v
NPM,Node Package Manager,是随同NodeJS一起安装的包管理和分发工具,它很方便让JavaScript开发者下载、安装、上传以及管理已经安装的包。
执行node包msi安装成功后,npm已经集成在node包中并一并安装
检验是否安装成功:win+r,输入cmd回车,进入Windows命令窗口,输入npm -v,出现版本信息即安装成功
在node主目录下配置 全局模块 安装路径:npm config set prefix D:\develop\nodejs\node_global
在node主目录下配置 cache缓存 路径:npm config set cache D:\develop\nodejs\node_cache
配置 全局模块 环境变量:我的电脑-属性-高级系统设置-高级-环境变量,进入环境变量对话框。
①:在系统变量下新建"NODE_PATH",“D:\develop\nodejs\node_global\node_modules\”,这种方法用来指定NODE_PATH环境变量,并且用 ; 分割多个不同的目录(引申:NODE_PATH 是 NODE 中用来 寻找模块所提供的路径注册环境变量 ,NODE_PATH 实现 多个项目 模块复用 的最佳实践方案。node 的包加载机制,从项目的根位置递归搜寻 node_modules 目录,直到文件系统根目录的 node_modules ,如果还没有查找到指定模块的话,就会去 NODE_PATH中注册的路径中查找 。基于 nodejs 的包加载路径搜索算法,我们可以 采用全局安装的方式,将我们的包安装到全局,这样,多个项目可以共享全局中的依赖包。)
检查 NODE_PATH 是否配置成功:win+r,输入cmd回车,进入Windows命令窗口,执行npm install express -g,安装express模块成功后,输入node,进入node的REPL环境,输入require('express'),如果出现express模块相关信息即配置成功
②:在用户变量"PATH"末尾追加,“D:\develop\nodejs\node_global\”(引申:操作系统 PATH 环境变量作用,当系统调用一个命令的时候,就会在PATH变量中注册的路径中寻找,如果注册的路径中有就调用,否则提示命令没找到,“xxx不是内部或外部命令,也不是可运行的程序或批处理文件”,原因是没有配环境变量PATH)
检查 PATH 是否配置成功:win+r,输入cmd回车,进入Windows命令窗口,对于已经安装成功的模块,执行相应的命令,如:npm、cnpm、vue、webpack,出现相关输出信息即配置成功
重置npm模块的注册、管理、发布地址为cnpm:
修改npm包管理器的registry为淘宝镜像,npm config set registry https://registry.npm.taobao.org(官方地址为registry.npmjs.org)
重置设置代理:npm config set proxy http://server:port
如 ABC 项目使用了babel的1.x版本,项目 DEF 使用了 babel的2.x版本x版本,可以将 NODE_PATH 指定的位置中存放babel的高版本2.x版本,再将项目ABC的 node_modules 目录中放置低版本 1.x 版本。这样就解决了模块版本的差异性,因此,在实际开发中,模块存放路径的两种方式可以结合使用和配置。
配置:
npm config;管理npm的配置路径
npm config ls -l;查看配置详情信息
npm config get prefix;查看全局模块安装路径,prefix 字段就是全局 base path
npm config set prefix D:\develop\nodejs\node_global;重置全局模块安装路径
npm config set cache D:\develop\nodejs\node_cache;重置全局模块缓存路径
npm root;查看当前项目包(模块)的安装路径
npm root -g;查看系统中node全局包(模块)的安装路径
npm ls/list/la/li;查看当前路径下安装的模块
npm ls -g;查看全局安装的模块
npm init;在项目中引导创建一个package.json文件,安装包的信息可保持到项目的package.json文件中,以便后续的其它的项目开发或者他人合作使用。
npm help;查看某条命令的详细帮助
npm help install;系统在默认的浏览器或者默认的编辑器中打开本地nodejs安装包的文件(/nodejs/node_modules/npm/html/doc/cli/npm-install.html)
npm packageName -v;查看本地是否安装过某个包
npm list;查看当前目录下的包
npm list -g;查看全局目录下的包
npm install;在项目根路径下执行该命令,会在项目根路径下的 node_modules 中安装配置在 package.json 中的所有依赖包
npm install express;安装express包在命令窗口的当前目录下,默认安装最新版本,并将信息保持到项目的package.json文件中
npm install [email protected];安装express包的3.2.0版本在命令窗口的当前目录下,并将信息保持到项目的package.json文件中
npm install express --global/-g;安装express模块在全局目录下
npm install express --save/-S;安装包加入到生产阶段的依赖,package.json文件的dependencies字段内容增加
npm install express --save-dev/-D;安装包加入到开发阶段的依赖,package.json文件的devDependencies字段内容增加
npm install express --save-optional/-O;安装包加入到可选阶段的依赖,package.json文件的optionalDependencies 字段内容增加
例如,构建一个基于 webpack 模板的vue项目:
$ npm instll vue;
$ npm install --global vue-cli;vue的命令行工具
$ vue init webpack demo;核心命令
$ cd demo
$ npm instll;安装所有依赖包
$ npm run dev;运行开发阶段的项目
例如,构建
$ npm install -g react-native-cli;React Native的命令行工具
$ react-native init demo;核心命令
$ cd demo
$ react-native run-android;运行android平台的项目
package.json文件可以手工编写,也可以使用npm init命令自动生成。npm 的 init 命令之后,会在工程目录文件夹的根目录生成 package.json 文件,该JSON文件字段详解:
npm将该整个工程项目定义为一个 package(包),该文件定义了项目所需要的模块和配置信息,npm install 后,项目根据这个文件的配置字段下载需要的模块 以及 配置需要的运行和开发环境。
"name": "demo01",//项目名字
"version": "0.0.1",//项目版本号,大版本.次要版本.小版本
"author": "wan",//
"description": "The first react-native demo",//
"keywords": ["react-native","javascript"],//
"repository": {undefined
"type": "git",
"url": "https://path/to/url"
},
"license":"MIT",
"engines": {"node": "0.10.x"},
"bugs":{"url":"http://path/to/bug","email":"[email protected]"},
"contributors":[{"name":"李四","email":"[email protected]"}],
"private": true,//
"scripts": {undefined//
"start": "node node_modules/react-native/local-cli/cli.js start",
"test": "jest"
},
//dependencies 和 devDependencies 字段都指向一个对象。该对象的各个成员,分别由模块名和对应的版本要求组成,表示依赖的模块及其版本范围。
"dependencies": {undefined//指定了项目运行所依赖的模块
"react": "16.0.0-alpha.6",
"react-native": "0.44.3",
"react-native-deprecated-custom-components": "^0.1.0"
},
"devDependencies": {undefined//指定项目开发所需要的模块。
"babel-jest": "20.0.3",
"babel-preset-react-native": "1.9.2",
"jest": "20.0.4",
"react-test-renderer": "16.0.0-alpha.6"
},
"jest": {undefined//
"preset": "react-native"
}