简介
学习
Node.js
前,我们需要弄懂 什么是
npm
,
npm
是一个命令工具, 能够连接互联网共享模块仓库。能登录并发布自己的模块。同时它能够从互联网下下载想要的模块, 也能执行内置脚本, 启动项目,测试代码等操作。
CLI 命令
npm init
初始化npm
项目
-
npm init -f
已存在package.json
, 强制初始化 -
npm init -y
直接初始化, 跳过交互输入
npm ls
根据 package.json
查询模块状态
-
npm ls --dev
只展示devDependencies
-
npm ls --productioin
只展示dependencies
-
npm ls --parseable
目录形式展示
npm install
给npm项目添加依赖模块
-
npm install -g
全局安装模块 -
npm install -P or -S
=>npm install --save
-
npm install -D
=>npm install --save-dev
-
npm install <name>@<version>
=>npm install vue@2.5.16
-
npm install url
=>https://github.com/vuejs/vue/archive/v2.5.16.tar.gz
orhttps://github.com/vuejs/vue/tarball/v2.5.16
-
npm install [<@scope>/]<name>@<tag>
=> 私有模块
npm install
模块引入算法
如果安装A模块,A模块依赖B, B模块依赖C, 则目录为下
node_modules
|---- A
|---- B
|---- C
如果安装A模块,A模块依赖B模块和C@1模块, B模块依赖C@2模块, 则目录为下
node_modules
|---- A
|---- B
| ---- C@2
|---- C@1
npm uninstall
取消安装模块
-
npm uninstall -g
取消全局安装 -
npm uninstall -S
=>npm uninstall --save
-
npm uninstall -D
=>npm uninstall --save-dev
npm version
项目模块版本号管理
-
npm version
查看项目的各个模块依赖的版本 -
npm version major
主版本升级, 如1.0.1
=>2.0.0
-
npm version minor
次版本升级, 如2.0.0
=>2.1.0
-
npm version patch
修正版本升级, 如2.1.0
=>2.1.1
-
npm version premajor
预先主版本, 如2.1.1
=>3.0.0-0
-
npm version preminor
预先次版本, 如3.0.0-0
=>3.1.0-0
-
npm version preminor
预先修正版本, 如3.1.0-0
=>3.1.1-0
npm version [major|minor] 都会进行一次git commit
提交, 同时会标记一个tag git tag -a v版本号
package.json 介绍
package.json
是 npm
仓库的描述文件, 其中包括项目依赖, 脚本执行, 版本号,依赖环境等说明
name
项目名称
version
版本号
main
当前npm
库的入口文件
package.json
格式如下
{
"name": "npm-exmaple",
"main": "index.js"
}
引入npm-exmaple
模块
require('npm-example'); // 实际上引入的文件为 npm-example/index.js
require('npm-exmaple/lib/utils'); // 引入 npm-example/lib/utils.js
scripts
npm
的脚本, 能够编写shell命令, 同时自动将node_modules/.bin
加入 $PATH
中。使用npm run [task]
执行
{
"scripts": {
"start": "NODE_ENV=production ./bin/www",
"dev": "nodemon app.js",
"test": "mocha"
}
}
dependencies
和devDependencies
项目部署环境需要引用的模块, 一般存放在 dependencies
, 如 express
, axios
等,
测试环境,开发环境,编译环境需要的模块,一般放在 devDependencies
, 如果 webpack
, mocha
, babel-core
{
"dependencies": {
"express": "^4.16.0",
"axios": "0.17.1"
},
"devDependencies": {
"webpack": "3.10.0",
"mocha": "^5.1.1",
"babel-core": "6.26.0"
}
}
bin
模块执行脚本, 如果当前模块暴露了一个命令, 如 node-bin
, 那么将在安装该模块时,将会将node-bin
执行文件传入给 $prefix/bin
或者 node_modules/.bin
{
"name": "node-bin",
"bin": "./cli.js"
}
or
{
name: "node-example",
"bin": {
"node-bin": "./cli.js"
}
}
.npmrc
.npmrc
读取顺序
-
/path/to/my/project/.npmrc
当前项目下 -
$HOME/.npmrc
当前用户下 -
$PREFIX/etc/npmrc
配置目录, 使用npm config get prefix
获取$PREFIX
-
/path/to/npm/npmrc
与npm
同级别, 使用which npm
获取npm
的路径
常用的 .npmrc
的key
设置
# prefix
# http请求代理服务器
proxy =
# https请求代理服务器
https-proxy =
# no-proxy 不使用代理的域名
no-proxy[] = 'domain1'
# npm 远程仓库地址
registry = https://registry.npm.taobao.org
小结
目前完成了部分内容, 已经把常用的一些npm
指令和配置介绍了一下,后续将会不间断补充新的内容。