Bootstrap

npm常用命令、 npm init初始化项目、nrm的安装使用

npm

  1. npm是一个网站
    npm官网,可以在上面搜索一些第三方包,你也可以写一个包,将包放在npm官网上,那么别人也可以通过npm将你的包下载下来。如果该网站上搜不到的包,那么就不能通过npm下载下来。
  2. npm 是一个命令行工具
    只要你安装了node,就已经安装了npm
    npm也有版本这个概念,你可以通过npm --versionnpm -v来查看当前npm的版本号
    升级npm npm install --global npm
  3. npm常用命令
  • npm init
    (1)npm init -y ,可以跳过向导,快速生成
    (2)npm install,简写npm i,自动下载package.json中dependencies中全部的依赖。
    (3)npm install 包名 ,简写npm i 包名,只下载包
    (4)npm install --save 包名 ,简写npm i -S 包名,下载并保存依赖项(package.json中dependencies)
    (5)npm uninstall 包名,简写npm un 包名,只删除,如果有依赖项会依然保存
    (6)npm uninstall --save 包名,简写npm un -S 包名,删除的同时也会将依赖信息删除
    (7)npm help,查看使用帮助
    (8)npm 命令 --help,查看对应命令的使用帮助,例如我忘记uninstall的简写,那么我可以输入npm uninstall --help

解决npm被墙问题

npm存储包文件的服务器在国外,有时候会被墙,速度很慢。
淘宝的cnpm,淘宝的开发团队把npm在国内做了一个备份
安装淘宝的cnpm,接下来你安装包的时候把之前的npm替换成cnpm

# 在任意目录执行都可以
# --global 表示安装到全局,而非当前目录
npm  install --global cnpm

举个例子

# 这个还是走国外的npm服务器,速度较慢
npm install jquery

# 使用cnpm就会通过淘宝的服务器来下载jquery
cnpm install jquery

如果不想安装cnpm又想使用淘宝的服务器来下载

npm install jquery --registry=https://registry.npm.taobao.org

但每次手动这样加参数很麻烦,所以我们可以把这个选项假如配置文件中

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

#查看 npm配置信息
npm config list

只要经过了上面命令的配置,则你以后所有的npm install都会默认通过淘宝的服务器下载

npm init 创建 package.json

步骤:

  1. 在 桌面新建node作为项目目录,在该目录下打开cmd。
  2. 使用 npm init 指令创建项目描述文件 package.json。
    命令行里会以交互的形式让你填一些项目的介绍信息,依次介绍如下:(不知道怎么填的直接回车、回车…)
  • name 项目名称
  • version 项目的版本号
  • description 项目的描述信息
  • entry point 项目的入口文件
  • test command 项目启动时脚本命令
  • git repository 如果你有 Git 地址,可以将这个项目放到你的 Git 仓库里
  • keywords 关键词
  • author 作者叫啥
  • license 项目要发行的时候需要的证书,平时玩玩忽略它
    注: package.json不可以有注释,因为json文件不能有注释
C:\Users\Administrator\Desktop\node>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.

See `npm help json` for definitive documentation on these fields
and exactly what they do.

Use `npm install <pkg>` afterwards to install a package and
save it as a dependency in the package.json file.

Press ^C at any time to quit.
package name: (node) npm-demo
version: (1.0.0) 0.0.1
description: 这是一个测试项目
entry point: (index.js) main.js
test command:
git repository:
keywords:
author: wang
license: (ISC)
About to write to C:\Users\Administrator\Desktop\node\package.json:

{
  "name": "npm-demo",
  "version": "0.0.1",
  "description": "这是一个测试项目",
  "main": "main.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "wang",
  "license": "ISC"
}


Is this OK? (yes) yes
  1. 在项目目录下会自动生成 package.json 文件,打开可以看到刚才配置的项目信息。
{
  "name": "npm-demo",
  "version": "0.0.1",
  "description": "这是一个测试项目",
  "main": "main.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "wang",
  "license": "ISC"
}
  1. 下载项目依赖包,并保存第三方包的依赖信息
    如果想将项目依赖的包记录在package.json,则在npm下载时加上–save,如npm install --save jquerynpm install jquery --save ,则在下载完毕的同时,会将该第三包依赖信息记录到dependencies。
    因此建议在执行npm install 包名时都加上--save这个选项来保存依赖信息。
    注:npm5以后的版本不用–save也能自动保存dependencies
{
  "name": "npm-demo",
  "version": "0.0.1",
  "description": "这是一个测试项目",
  "main": "main.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "wang",
  "license": "ISC",
  "dependencies": {
    "jquery": "^3.4.1"
  }
}
  1. npm install
    假如不小心将第三方包删除了,只要package.json还在,就可以直接使用npm install,就会自动把package.json中dependencies中所有的依赖项都下载回来。

package-lock.json

  • npm5以前没有package-lock.json这个文件。
  • 当你安装包的时候,npm都会生成或更新package-lock.json这个文件。
  • package-lock.json这个文件会保存 node_modules中所有包的信息(版本、下载地址),这样重新更新npm install的时候速度就可以提升。
  • 从名字上来看,lock为锁的意思,如果没有改文件,项目重新install下载依赖项的话,会更新到最新版本,但若有package-lock.json,则会锁定该文件中指定的版本号,反正自动升级。

nrm的安装使用

  1. 作用:提供了一些最常用的npm包镜像地址,能够让我们快速的切换安装包的服务器地址。
  2. 镜像:由于包是存在于国外的npm服务器,由于网络原因访问不到,因此在国内,我们可以创建一个和官网完全一样的npm服务器,只不过,数据从人家那里拿过来,除此之外,使用方式完成一样,这就是镜像。
  3. 安装使用
    • 运行npm i nrm -g全局安装nrm的包;
    • 使用nrm ls查看当前所有可用的镜像源地址以及当前所使用的镜像源地址;
    • 使用nrm use npmnrm use taobao即可切换不同的镜像源地址
    • 注:nrm只是单纯的提供了几个常用的下载包的url地址,并且能够让我们在这几个地址之间很方面的进行切换,但是我们每次安装包的时候,使用的装包工具都是npm
;