Node.js 对 npm 包的操作

Node.js

NPM介绍:
  1. npm(node package manage)node包管理器。管理node包的工具。
  2. 包:模块(包约等于模块,一个包可以包括一个或多个模块)
  3. npm在安装node的时候,就已经安装到计算机中
  4. 命令行工具:npm -v ,如果看到版本号,说明已经安装成功

npm是管理(下载、卸载、发布)第三方模块的工具

第三方模块:
  1. 非node自带的模块,也不是自定义的模块
  2. 别人写的模块,发布到了 npmjs.com 这个网站
  3. 第三方模块,都是在node核心模块的基础之上,封装了一下,实现了很多非常方便快速简洁的方法
npm作用:

​ npm的作用是:管理node模块的工具

  1. 下载并安装第三方的模块
  2. 卸载第三方模块
  3. 发布模块
  4. 删除已发布的模块

npm就是一个管理(下载安装、卸载…)第三方模块的工具

本地模块

初始化

安装本地模块,使用npm工具初始化

npm init -y
# 或
npm init
# 然后一路回车

初始化之后,会在项目目录中生成 package.json 的文件

注意事项:

  • package name 默认使用当前文件夹 当作 包的名字
  • package name 不能有中文
  • package name 不能有特殊符号
  • package name 不能和需要安装的第三方模块同名
安装卸载第三方模块的命令

初始化之后,就可以在当前文件夹安装第三方模块了

建议在安装第三方模块之前,先执行如下命令...
下面的命令只需要执行一次即可(不管以后重启VsCode还是重启电脑,都不需要执行第二次)
npm config set registry https://registry.npm.taobao.org

下载安装第三方模块

# 正常的下载安装
npm install 模块名

# 简写 install 为 i
npm i 模块名

# 一次性安装多个模块
npm i 模块名 模块名 模块名

# 下载开发依赖
npm install -D 模块名
# 或
npm install --save-d 模块名

# 下载全局 - 下载全局性质的包,比如vue-cli(创建Vue项目的脚手架工具),nrm(切换下载源)
npm install -g 包名

# 查看全局下载的包
npm ls -g --depth 0

# 根据package.json 文件 dependencies和devDependencies字段自动下载对应的包
# 在接触一个新项目的时候,都需要使用这个安装依赖
npm install
# !!!所有的 install 都可以替换为 i 简写!!!

卸载模块

# 删除指定的第三方包
npm uninstall 模块名
# 简化写法
npm un 模块名
# 删除多个包
npm un 模块名 模块名 模块名...
# 删除全局包
npm un -g 模块名

上课演示的是 jquery、mysql、moment、cors、express、echarts

使用第三方包
// 1.任何包第一步都需要引入,require是直接写包名
const pkg = require('包名');
// 2.参考文档使用包
// 2.1 去官方找,比较优秀的包都是有官网的,vue,react,angular,lodash
// 2.2 npm.js.com 搜索包,包主页会有文档
// 2.3 百度搜索
nrm的使用
# nrm 是用来切换下载镜像源的
# 查看所有源地址
nrm ls
# 切换源
nrm use 源名称
package.json 文件

在初始化之后,会生成一个package.json的文件

  • 创建 package.json

    npm init
    npm init -y
    
  • main

    main字段指定了模块的入口文件

  • dependencies 依赖 ( 复数 )

    • dependencies 指定了当前项目所依赖 ( 需要 ) 的包,可以使用 npm install 可以安装所有的依赖
    • 使用 npm install 模块 安装模块时,会将该模块记录到 dependencies 中,表示这是项目必须的模块
    • 使用 npm install 模块 -D 安装模块时,会将该模块记录到 devDependencies 中,它表示项目不需要这个模块,但是开发阶段需要这个模块
  • scripts

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

    • 下面的代码中,a 表示 git init 命令。执行命令时,使用 npm run a ,相当于执行了 git init
    • 下面的代码中,start 表示 node app.js 命令,执行命令时,使用 npm start 即可,相当于执行了 node app.js
"script" :{
	"a" : "git init",
    "start" : "node app.js",
    "t" : "dir c:\\"
}

运行 scripts

npm run t
npm run start
# 只有start 可以简化使用
npm start

require的加载机制

  1. 判断缓存中有没有,如果有,使用缓存中的内容

  2. 缓存中没有,那么表示第一次加载,加载完会缓存

  3. 判断模块名有没有带路径(./)

  4. 模块名中有路径,加载自定义模块(自己写的文件)const xx = require('./xx')

    1. 优先加载同名文件,加载一个叫做 xx 的文件
    2. 再次加载js文件,加载 xx.js 文件
    3. 再次加载json文件,加载 xx.json 文件
    4. 最后加载node文件,加载 xx.node文件
    5. 如果上述文件都没有,则报错 “Cannot find module ‘./xx’”
  5. 模块名没有路径优先加载核心模块如果没有核心模块,则加载第三方模块

  6. 加载第三方模块的查找方式

    1. 优先在当前文件夹的node_modules里面查找第三方模块
    2. 在当前文件夹的上级目录的node_modules里面查找第三方模块
    3. 继续向上层文件夹查找第三方模块

开发属于自己的包

规范的包结构
📂 - sy123
		📃 - package.json  (package.json包的配置文件)
		📃 - index.js      (入口文件)
		📃 - README.md     (说明文档)
  1. name 项目名,不能有中文

  2. version 项目版本号,里面只能是 数字.数字

  3. main 项目的入口文件,指的是哪一个文件,默认是index.js,如果不是,需要使用main指定

  4. scripts 声明简化命令:

    {
        "简化命令":"真实命令(命令行能用的名)",
    	"start":"node ./index.js"
    }
    // 执行简化命令,在命令行中输入 npm run 简化命令
    // start特殊,start可以 npm run start 也可以 npm start
    
  5. dependencies 项目运行依赖(第三方包的信息,这里包含的包只要没有了,项目就无法运行)

  6. devDependencies 开发依赖(开发中会用到,在项目运行时不会用,less,sass…)

初始化 package.json
注意:JSON文件不能有注释
{
  "name": "sy123",  // 包(模块)的名字,和文件夹同名。别人加载我们的包,找的就是这个文件夹
  "version": "1.0.0",
  "description": "This is a package by Laotang",
  "main": "index.js", // 别人加载我们的模块用,require加载的就是这里指定的文件
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "keywords": [ // 在npm网站中,通过关键字可以搜索到我们的模块,按情况设置
    "laotang",
    "itcast",
    "test"
  ],
  "author": "Laotang", // 作者
  "license": "ISC" // 开源协议
}
index.js 中定义功能方法
// 别人加载的就是我的 index.js 
// 所以,必须在 index.js 中导出内容

function a() {
  console.log('aaa')
}

function b() {
  console.log('bbb')
}

module.exports = { a, b }  // 导出内容
编写包的说明文档
  • 包根目录中的 README.md 文件,是包的使用说明文档。通过它,我们可以事先把包的使用说明,以 markdown 的 格式写出来,方便用户参考。
  • README 文件中具体写什么内容,没有强制性的要求;只要能够清晰地把包的作用、用法、注意事项等描述清楚即可。
发布npm包
# 切换npm源
nrm use npm
# 登录npm
npm login
# 按照提示输入用户名、密码(按下键盘的时候不会有任何的显示,一直输入即可)、邮箱、OTP
# 发布
npm publish
更新npm包
# 在package.json中version,升级版本号
# 如果推送不上去,使用 npm login 重新登录一下
npm publish
删除自己发布的npm包
npm unpublish 包名 --force
# 删除包之后,24小时内不能再发布

第一次运行报错及解决

  • 运行 nrm ls 或者 nrm use taobao 等命令,如果报错如下:

    “无法加载文件 C:…,因为在此系统上禁止运行脚本。…”

  • 解决办法是:

    • 管理员方式,打开命令行(powershell)窗口
    • 执行 set-ExecutionPolicy RemoteSigned;
    • 在出现的选项中,输入 A,回车。即可。
  • 如果报错如下

    “无法将 nrm 识别为 cmdlet、函数、脚本文件或可运行程序的名称。xxxxxxxxxxx”

  • 解决办法,重启vscode,win7可能要重启电脑。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值