npm是啥玩意???
        npm其实是Node.js的包管理工具(package manager)。为啥我们需要一个包管理工具呢?其实是因为我们在Node.js上开发时,会用到很多别人写的JavaScript代码。如果要使用别人写的某个包,每次都要根据名称搜索一下官方网站,下载代码,解压,script 引入,这个过程非常繁琐 。这个时候一个集中管理的工具出现了:大家都把自己开发的模块打包,然后放到npm官网上,如果要使用,直接通过npm安装就可以直接用,不用管代码存在哪,应该从哪下载。更重要的是,如果我们要使用模块A,而模块A又依赖于模块B,模块B又依赖于模块X和模块Y,npm可以根据依赖关系,把所有依赖的包都下载下来并管理起来。否则,靠我们自己手动管理,肯定既麻烦又容易出错。
       大家如果是才开始对前端或者vue框架进行学习和使用,不是很清楚npm的使用,今天将和大家一起来简单学习一下安装npm的方法和如何使用npm。了解一下npm的常用命令和基本的操作。由于npm和node.js是捆绑安装的,所以我们安装node.js就可以了。

一、安装NodeJS的安装与使用-百度经验

npm作用:
1、安装和删除前段node_modules包中的依赖
2、运行我们的前端项目
安装链接:Node.js — 在任何地方运行 JavaScript
检测是否安装成功:去cmd中输入node -v 检测是否安装成功(如果显示版本号就代表安装成功)
基本的npm用法:
# 查看 npm 的版本 
$ npm -v  //<< 安装成功会返回版本号

# 查看各个命令的简单用法
$ npm -l 
 
# 查看 npm 命令列表
$ npm help

# 查看 npm 的配置
$ npm config list -l

二、npm init 创建模块

$ npm init
npm init: 用来初始化生成一个新的 package.json 文件。它会向用户提问一系列问题,如果觉得不用修改默认配置,一路回车就可以了。以上创建好之后就可以在Package.json直接看了 还可以在里面修改更新。
当我们在一个空文件 npm init 初始化的时候这个文件就诞生了,如下所示:
如果有package.json 你就可以直接下载安装这些依赖包。包文件就会出现在node_modules里面。
express 的 package.json包进行简单介绍:
{
  "name": "express", //包名
  "description": "Fast, unopinionated, minimalist web framework for Node.js", //包的地址
  "version": "4.18.2", //包的版本号
  "author": "TJ Holowaychuk <tj@vision-media.ca>", //包的作者和名字
  "contributors": [   //包的其他贡献者姓名
    "Aaron Heckmann <aaron.heckmann+github@gmail.com>",
    "Ciaran Jessup <ciaranj@gmail.com>",
    "Douglas Christopher Wilson <doug@somethingdoug.com>"
  ],
  "license": "MIT", // 你应该为你的模块制定一个协议,让用户知道他们有何权限来使用你的模块,以及使用它有哪些限制。
  "repository": {  //包代码存放的位置
    "type": "git",
    "url": "git+https://github.com/expressjs/express.git"
  },
  "main": "index.js",
  "dependencies": {  //依赖包列表 如果依赖包没有安装,npm 会自动将依赖包安装在 node_module 目录下
    "accepts": "~1.3.8",
    "array-flatten": "1.1.1",
    "body-parser": "1.20.1",
    "content-disposition": "0.5.4",
    "content-type": "~1.0.4",
    "cookie": "0.5.0",
    "cookie-signature": "1.0.6",
    "debug": "2.6.9",
    "depd": "2.0.0",
    "encodeurl": "~1.0.2",
    "escape-html": "~1.0.3",
    "etag": "~1.8.1",
    "finalhandler": "1.2.0",
    "fresh": "0.5.2",
    "http-errors": "2.0.0",
    "merge-descriptors": "1.0.1",
    "methods": "~1.1.2",
    "on-finished": "2.4.1",
    "parseurl": "~1.3.3",
    "path-to-regexp": "0.1.7",
    "proxy-addr": "~2.0.7",
    "qs": "6.11.0",
    "range-parser": "~1.2.1",
    "safe-buffer": "5.2.1",
    "send": "0.18.0",
    "serve-static": "1.15.0",
    "setprototypeof": "1.2.0",
    "statuses": "2.0.1",
    "type-is": "~1.6.18",
    "utils-merge": "1.0.1",
    "vary": "~1.1.2"
  },
  "devDependencies": {  //开发环境的依赖包
    "after": "0.8.2",
    "connect-redis": "3.4.2",
    "cookie-parser": "~1.4.6",
    "cookie-session": "1.4.0",
    "ejs": "3.1.9",
    "eslint": "8.40.0",
    "express-session": "1.17.3",
    "hbs": "4.2.0",
    "istanbul": "0.4.5",
    "marked": "4.3.0",
    "method-override": "3.0.0",
    "mocha": "10.2.0",
    "morgan": "1.10.0",
    "multiparty": "4.2.3",
    "pbkdf2-password": "1.2.1",
    "should": "13.2.3",
    "supertest": "6.3.3",
    "vhost": "~3.0.2"
  },
  "scripts": {   //项目的生命周期个各个环节需要执行的命令。key是生命周期中的事件,value是要执行的命令。
    "lint": "eslint .",
    "test": "mocha --require test/support/env --reporter spec --bail --check-leaks test/ test/acceptance/",
    "test-ci": "mocha --require test/support/env --reporter spec --check-leaks test/ test/acceptance/",
    "test-cov": "istanbul cover node_modules/mocha/bin/_mocha -- --require test/support/env --reporter dot --check-leaks test/ test/acceptance/",
    "test-tap": "mocha --require test/support/env --reporter tap --check-leaks test/ test/acceptance/"
  },
  "engines": { //// node版本范围
    "node": ">= 0.10.0"
  }
}

三、npm set 设置环境变量

npm set
如果我们要修改环境变量,使用该命令。
1. 设置 npm 镜像源(解决国内下载慢的问题)
默认 npm 镜像源在国外,可切换为国内镜像:
npm set registry https://registry.npmmirror.com
如果这里镜像源证书过期的可以看这个文章的方法更换:npm镜像查看和修改_查看npm镜像源-CSDN博客
2. 设置用户信息(用于发布包)
$ npm set init-author-name 'my name jerry'
//但是仅仅只是执行了已修改,这时候的 Package.json并没有发生变化

//要设置后执行init才是真正修改成功
$ npm init

四、npm search 搜索模块

$ npm search <搜索词> [-g]
npm search 命令用于搜索npm仓库,它后面可以跟字符串,也可以跟正则表达式。

五、npm install 安装模块

1. 安装生产依赖(会写入 package.json 的 dependencies 中)
 npm install 模块名
//可简写成 npm i 模块名
例子:npm install express
2. 安装开发依赖(会写入 package.json 的 devDependencies 中)
npm install 模块名 --save-dev
//或者可写为npm i 模块名 -D
示例:安装  webpack 作为开发依赖,执行  npm install webpack --save-dev 或  npm i webpack -D
3. 安装指定版本的模块
npm install 模块名@版本号
//eg: npm install gulp@3.9.1
//示例:安装 axios 的 1.12.2 版本,执行 npm install axios@1.12.2。
4. 安装项目所有依赖(根据 package.json 和 package-lock.json
在项目根目录(包含  package.json 的目录)执行  npm install,会自动安装文件中声明的所有依赖。

六、npm uninstall 卸载模

$ npm uninstall <name> [-g] 
eg: npm uninstall gulp --save-dev  
    npm i gulp -g
如何查看是否卸载完成:
      1.你可以到 /node\_modules/ 目录下查看包是否还存在。
      2.或者使用以下命令查看:npm ls 查看安装的模块

七、npm update 更新模块

npm update express
有些包是全局安装了,在项目里面只需要引用即可

八、npm link 引用模块

$ npm link [<@scope>/]<pkg>[@<version>]
//eg: 引用   npm link gulp gulp-ssh gulp-ftp
//eg: 解除引用 npm unlink gulp

九、npm run 执行脚本

package.json scripts 字段,可以用于指定脚本命令,供 npm 直接调用。 npm run 会创建一个Shell,执行指定的命令。

基本用法

1.在 package.json 中定义脚本先在项目的 package.json 文件中,通过 scripts 字段声明脚本,格式为 {"脚本名": "脚本命令"}。例如:

{
  "scripts": {
    "start": "node index.js",       // 启动项目
    "dev": "nodemon index.js",      // 开发模式(自动重启)
    "build": "webpack --mode production",  // 打包项目
    "test": "jest"                  // 运行测试
  }
}
       其中, 脚本名 是自定义的(如  startdev), 脚本命令 可以是任何终端命令(如  nodewebpackecho 等)。

2.执行脚本在终端(命令提示符 / CMD)中,进入项目根目录(包含 package.json 的目录),通过 npm run 脚本名 执行对应脚本:

npm run start   # 执行 start 脚本(运行 node index.js)
npm run dev     # 执行 dev 脚本(运行 nodemon index.js)
npm run build   # 执行 build 脚本(运行 webpack 打包)
部分常用脚本名可以省略  run 直接执行:
npm start   # 等价于 npm run start
npm test    # 等价于 npm run test

脚本传参

如果需要给脚本传递参数,在脚本名后加  -- 参数 即可。例如:
npm run serve -- --port 8081  # 给 serve 脚本传递 --port 8081 参数

脚本执行顺序

  • 并行执行(同时运行多个脚本):用 & 分隔(Windows 需用 cmd /c "命令1 & 命令2"
"scripts": {
  "dev": "npm run watch & npm run serve"
}
  • 串行执行(前一个完成再执行下一个):用 && 分隔
"scripts": {
  "build": "npm run lint && npm run compile"  // 先 lint 再编译
}

示例:实际开发场景

假设你用 Node.js 写了一个简单的 HTTP 服务( index.js):
// index.js
const http = require('http');
http.createServer((req, res) => {
  res.end('Hello World!');
}).listen(3000, () => {
  console.log('Server running on port 3000');
});
在  package.json 中定义启动脚本:
{
  "scripts": {
    "start": "node index.js"
  }
}
执行  npm start,终端会输出  Server running on port 3000,此时访问  http://localhost:3000 即可看到页面。
通过  npm run 执行脚本,可以将复杂的命令封装成简单的脚本名,统一项目的操作方式,尤其在团队协作中非常实用。
Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐