NPM学习

本文介绍了Node.js的包管理工具npm的基本概念和使用方法,包括npm的初始化、包的安装、移除、配置及版本管理。还探讨了package.json文件的作用,依赖与开发依赖的区别,以及全局安装的特点。此外,文章提到了npm的一些实用技巧,如配置别名、创建自定义包和使用cnpm。最后,简要介绍了yarn作为替代npm的选择。
摘要由CSDN通过智能技术生成

Nodejs学习之npm

这是学习npm的学习笔记。

npm --> node package manager,也就是node的包管理工具(一个应用程序)。

教程

Getting started | npm Docs (npmjs.com)

NPM 使用介绍 | 菜鸟教程 (runoob.com)

package

nodejs的包是基本遵循CommonJS规范,将一组相关的模块组合在一起,形成一个完整的工具。想c语言的头文件

作用

对node工具包搜索、安装、删除、上传。这样我们可以是用别人已经开发好的包更好的进行开发。其实和应用商城差不多。

在安装nodejs后就自动安装好了

常用命令

查看npm版本

npm -v

image-20211106201004291

查看配置信息

npm config list #查看一部分 
npm config ls -l #查看更加详细的配置信息 

初始化

npm init # 快速创建包
npm init --yes # 更快速,直接全部默认,但是文件夹名称不能为中文和大写字母

image-20211106201856408

image-20211106202504719

创建完成后会在文件夹下多一个package.js的文件

image-20211106202535897

如何选择开源许可证? - 阮一峰的网络日志 (ruanyifeng.com)

package.json

这个文件是npm包的配置文件

{
  "name": "npmlearn",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "",
  "license": "ISC"
}

下载过包之后会生成一个package-lock-json,锁定安装时的包的版本号,并且需要上传到git,以保证其他人在npm install时大家的依赖能保证一致。

搜索包

npm search xxx
npm s xxx #xxx 就是包名

这样搜索不好用,而且不好看。我们可以到它是在http://npmjs.org去搜索。

npm包的安装

npm install xxx
npm i xxx
npm i xxx@x.x.x 下载指定版本
# 都是一样的效果

它会自动安装在当前package.jsonnode_modules目录下。

image-20211107141706433

安装并在package.json 中保存包的信息(dependencies 属性)

保存依赖,其实加不加save,下载的时候自动会加的(6版本之后)

这样做的目的是在于多人协作时的代码同步,在同步协作时,可以使用dependencies中的内容来安装相关的包。

npm install jquery --save
npm install jquery -S
# 效果是一样的

image-20211106213349694

安装并在package.json 中保存包的信息(devDependencies 属性),这个是保存在开发依赖

npm i xxx -D # 这里以下载label包为例(ES6转换为ES5)

image-20211106213401164

依赖和开发依赖的区别

如果是在开发阶段使用的包,我们就是用devDependencies。比如webpack,这些只在开发中使用,一旦开发完毕,我们会借助打包工具,生成最终的结果。

而在项目运行中需要的依赖,我们就说它是dependencies(运行依赖),项目运行是必须的。

举个例子:

做饭需要很多工具和食材,完成料理之后,就不在需要锅等这个东西了,但是还需要食材和调料等。

在比如说label包,它是用来把ES6语法转换为ES5的,在转换完之后就不在需要了,也就说项目运行的时候是不需要的,那么label就是devDependencies.

像什么vue,react,jquery,bootstrap 这些都是dependencies

全局安装

npm install less -g
npm i less -g

全局安装的特性

  1. 不会影响当前项目的内容(对package.json没有任何影响)
  2. 在任意的命令行的位置都可以执行全局安装,不用到需要安装的目录位置
  3. 全局安装好的包,基本都是在命令行中使用,比如说安装了less,那么使用 lessc把less文件变异成css文件。

全局安装一般用于安装全局工具,一般不用项目中特定引入(比如scrpit这些),比如cnpm,yarn,webpack,gulp等,其安装位置是C:\User\用户名\AppData\Roaming\npm。使用npm root -g可以看到安装位置。

建议修改到D盘具体修改的教程百度。

修改成功。image-20211107131939571

这里我们安装nodemon,一个自动启动nodejs服务的代码,不用每次修改都要重启代码。

image-20211107132356896

image-20211107132347323

配置了环境变量中的path,就可以找到命令。

使用nodemon xxx.js启动js代码,修改js代码时会自动重新运行js代码。

安装依赖

根据package.json中的依赖声明,安装工具包

npm i
npm install
npm i --production  # 只安装dependencies中的依赖

需要注意的是node_modules目录是不能进入Git仓库的(太大了),它只是一个依赖,只需要将package,json文件进入Git,后续下载即可

移除包

npm remove xxx #xxx 是包名

多人协作时的注意点

需要注意的是node_modules目录是不能进入Git仓库的(太大了),它只是一个依赖,只需要将package,json文件进入Git,后续下载即可

别人把这个拉下来只要做在package.json稳重目录下运行npm i即可下载所以的依赖文件。

所以一定要把.gitignore给配置好。

npm的使用步骤

  1. 定位到一个文件夹下
  2. 初始化npm init
  3. npm i 包名安装包,必须要有package.json文件夹下运行

下载的工具包会存放在node_modules文件夹下。

npm包的使用

浏览器端

直接使用标签引用即可,比如

<script src='....'></script>
<link rel='text/css' href='.....'>

在浏览器的脚本

​ 使用require引入即可。

require会在当前路径查看,他就会向上向下都去查看看没有包。(百度)

const xx = require('包名');// 包名是在node_module下面的

全局工具的命令行使用

require

NPM 清除缓存

在npm下载失败时,可以试试清除缓存npm cache clean

NPM配置命令别名并执行

一般我们在运行nodejs代码时,都是使用的node xxx.js,这样看来也是比较简单的,但是如果命令一旦长了起来,比如果webpack app.js --config -------------这样一大堆的参数,那么就很不方便使用。所以我们可以在package.json里面的script的代码里面进行一些配置。

image-20211107191719133

这里我们添加了一个"server"属性,对应的就是运行代码的执行代码(路径是从存放的package.json的路径是相同,如果是同级,那么肯定就可以直接运行了,如果不是,就要以存放package.js的路径开始执行路径),在使用npm run server即可运行。

image-20211107191921455

对于路径不一致的情况来说,就要自己写好路径。

image-20211107192208695

封装NPM包

创建自己的NPM包可以方便自己以后的使用。

  1. 如果换过源,需要换回官方的原地址。

    npm config set registry https://registry.npmjs.org/
    
  2. 创建文件夹,并创建文件 index.js, 在文件中声明函数,使用 module.exports 暴露

  3. npm 初始化工具包,package.json 填写包的信息

  4. 账号注册(激活账号),完成邮箱验证

  5. 命令行下 『npm login』 填写相关用户信息 (一定要在包的文件夹下运行)

  6. 命令行下『 npm publish』 提交包 👌

npm 有垃圾检测机制,如果名字简单或做测试提交,很可能会被拒绝提交

可以尝试改一下包的名称来解决这个问题

image-20211107145244600

登录

image-20211107145341110

发布包

image-20211107145430580

image-20211107145919710

下载自己上传的包,并测试成功

image-20211107145845433

升级 NPM 包,需要修改 package.json 中的版本号修改,只需要执行『npm publish』就可以能提交

  1. 修改包代码
  2. 修改 package.json 中版本号
  3. npm publish 提交

删除发布的包

npm unpublish 包名 --force

CNPM

其实不是很推荐,还不如直接换源,或者使用机场。使用这个也好锁定版本号

cnpm是淘宝对国外npm服务器的一个完整的镜像版本,也是淘宝npm镜像,网址是http://npm.taobao.org/。

可以用此代替官方版本(只读),这是不可以上传的,所以在上传包之前如果修改过镜像地址,就必须修改为官方的,同步频率目前为 10分钟 一次以保证尽量与官方服务同步。

安装方式

image-20211107151421650

使用

使用下载cnpm工具

npm install -g cnpm --registry=https://registry.npmmirror.com

配置完成后,就可以使用 cnpm 命令来管理包,使用方法跟 npm 一样,但是这个不加 -S 不会保存在dependencies中

cnpm install lodash # 这个不加 -S 不会保存在dependencies中
npm 配置镜像地址
//淘宝镜像
npm config set registry https://registry.npm.taobao.org
//官方镜像   
npm config set registry https://registry.npmjs.org/

在发布工具的时候, 一定要将仓库地址, 修改为官方的地址

npm config list 来查看配置是否成功

yarn的使用

可以解决npm的一些缺点,比如包的版本控制,下载是并行的,更快。

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值