包管理工具npm的安装和使用

包管理工具

管理 包 的应用软件,可以对 包 进行下载 安装,更新,删除,上传 等操作。

借助包管理工具,可以快速开发项目,提升开发效率。

包管理工具是一个通用的概念,很多编程语言都有包管理工具,所以掌握好包管理工具非常重要。

常用的包管理工具

  • npm
  • yarn
  • cnpm

npm

npm 全称 Node Package Manager,翻译为中文意思是 Node的包管理工具。

npm 是node.js官方内置的包管理工具,是必须要掌握的工具。

npm的安装

node.js在安装时会自动安装npm,所以如果你已经安装好了node.js,就可以直接使用npm,可以通过 npm -v查看版本测试号,如果显示版本号说明安装成功,反之安装失败。

npm的基本使用

初始化

创建一个空目录,然后以此目录为工作目录启动命令行工具,指定 npm init

npm init 命令的作用是将文件夹初始化为一个 包 ,交互式创建package.json文件

package.json 是包的配置文件,每个包都必须要有 package.json

package.json 内容示例:

{"name": "1-npm", 		#包的名字"version": "1.0.0", 	#包的版本"description": "", 		#包的描述"main": "index.js", 	#包的入口文件"scripts": {			#脚本配置"test": "echo \"Error: no test specified\" && exit 1"},"author": "", 			#作者"license": "ISC" 		#开源证书
}

初始化的过程中还有一些注意事项:

  1. package name(包名)不能使用中文、大写,默认值是文件夹的名字,所以文件夹名称也不能使用中文和大写。
  2. version(版本号)要求 x.x.x 的形式定义,x 必须是数字,默认值为1.0.0
  3. ISC证书与MIT证书功能上是相同的,关于开源证书扩展阅读。https://www.ruanyifeng.com/blog/2011/05/how_to_choose_free_software_licenses.html
  4. package.json可以手动创建与修改。
  5. 使用npm init -y 或者 npm init --yes 可以极速创建package.json。
搜索包

搜索包的方式有两种:

  • 命令行 npm s/search关键字
  • 网站搜索 npm | Home
下载安装包

 可以通过npm install 和 npm i 命令安装包

# 格式
npm install <包名>
npm i <包名>
# 示例
npm install axios
npm i axios

运行之后文件夹下会增加两个资源:

  • node_modules文件夹:存放下载的包
  • package-lock.json包的锁文件:用来锁定包的版本

安装axios之后,axios就是当前这个包的一个依赖包,有时会简称依赖。

比如我们创建一个包名字为A,A中安装了包名字是B,我们就说B是A的一个依赖包,也会说A依赖B

 require导入npm包的基本流程
  1. 在当前文件夹下 node_modules中寻找同名的文件夹。
  2. 在上级目录中下的node_modules中寻找同名的文件夹,直至找到磁盘根目录。

 生产环境与开发环境

开发环境是程序员 专门用来写代码 的环境,一般是指程序员的电脑,开发环境的项目一般 只能程序员自己访问

生产环境是项目 代码正式运行 的环境,一般是指正式的服务器电脑,生产环境的项目一般 每个客户都可以访问

生产依赖与开发依赖

我们可以在安装时设置选项来区分 依赖的类型,目前分为两类:

类型命令补充
生产依赖

npm i -S axios

npm i --save axios

-S等效于 --save,-S是默认选项

包信息保存在package.json中的dependencies属性

开发依赖

npm i -D less

npm i --save-dev less

-D等效于 --save-dev

包信息保存在package.json中的devDependencies属性

举个例子方便理解,比如说做蛋炒饭需要用到 大米 , 油 , 葱 , 鸡蛋 , 锅 , 煤气 , 铲子 等。

其中 锅 、 煤气 、 铲子 属于开发依赖,只在制作阶段使用,

而 大米 、 油 、 葱 、鸡蛋 属于生产依赖,在制作与最终食用都会用到,

所以 开发依赖 是只在开发阶段使用的依赖包,而 生产依赖 是开发阶段和最终上线运行阶段都用到的依赖包。

全局安装

 可以执行安装选项 -g 进行全局安装

npm i -g nodemon

全局安装完成之后就可以在命令行的任意位置运行nodemon命令,该命令的作用是 自动重启node应用程序

说明:

  • 全局安装的命令不受工作目录位置影响
  • 可以通过 npm root -g 查看全局安装包的位置
  • 不是所有的包都适合全局安装,只有全局类的工具才适合,可以通过查看包的官方文档来确定安装方式
修改windows执行策略

 

windows 默认不允许npm全局命令执行脚本文件,所以需要修改执行策略

  1. 以管理员身份打开powershell命令行
  2. 键入命令 set-ExecutionPolicy remoteSigned
  3. 键入 A 然后敲回车 👌
  4. 如果不生效,可以尝试重启 vscode
 环境变量path

Path是操作系统的一个环境变量,可以设置一些文件夹的路径,在当前目录下找不到可执行文件时,就会在环境变量Path的目录中挨个的查找,如果找到则执行,如果没有找到就会报错。

补充说明:

  • 如果希望某个程序在任何工作目录下都能正常运行,就应该将该程序的所在目录配置到环境变量 Path中
  • windows下查找命令的所在位置:
    • cmd 命令行 中执行 where nodemon
    • powershell命令行 执行 get-command nodemon

安装包依赖

在项目协作中有一个常用的命令就是npm i,通过该命令可以依据package.jsonpackagelock.json的依赖声明安装项目依赖

npm i
// 或者
npm install

安装指定版本的包

项目中可能会遇到版本不匹配的情况,有时就需要安装指定版本的包,可以使用下面的命令的

## 格式
npm i <包名@版本号>
## 示例
npm i jquery@1.11.2

删除依赖

项目中可能需要删除某些不需要的包,可以使用下面的命令

## 局部删除
npm remove uniq
npm r uniq
## 全局删除
npm remove -g nodemon

配置命令别名

通过配置命令别名可以更简单的执行命令

配置 package.json 中的 scripts 属性

{"scripts": {"server": "node server.js","start": "node index.js",},
}

配置完成之后,可以使用别名执行命令

npm run server
npm run start

不过 start 别名比较特别,使用时可以省略 run

npm start

补充说明:

  • npm start 是项目中常用的一个命令,一般用来启动项目
  • npm run有自动向上级目录查找的特性,跟 require 函数也一样
  • 对于陌生的项目,我们可以通过查看 scripts 属性来参考项目的一些操作

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/669565.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何远程访问?

远程访问是指在不同的地理位置之间通过网络连接来实现对目标设备或系统的访问。无论是在个人生活还是商业领域&#xff0c;远程访问都起到了重要的作用&#xff0c;帮助人们实现高效的工作和便捷的生活。本文将介绍一款名为【天联】的组网产品&#xff0c;它是一款强大的异地组…

etcd源码流程---调试环境的搭建

etcd启动命令&#xff1a; name必须设置&#xff0c;否则会用default&#xff0c;集群内不同etcd实例的名字应该是唯一的&#xff0c;因为他会有一个map(name->ip)。如果initial-cluster-state设置为new&#xff0c;那么他会创建一个新的clusterid。需要在initial-cluster中…

智慧公厕打造智慧城市新标杆

公共厕所作为城市基础设施的重要组成部分&#xff0c;直接关系到市民的生活品质和城市形象。传统的公厕管理方式存在着许多问题&#xff0c;如环境脏乱、清洁不及时等&#xff0c;给市民带来了诸多不便和不满。而智慧公厕作为一种全新的管理模式&#xff0c;通过物联网、大数据…

AnaTraf 网络流量分析仪 - 网络性能检测与诊断(NPMD)

目录 网络流量回溯分析,快速定位故障 实时监控,洞察网络运行状况 性能分析,优化网络应用 即插即用,无需复杂配置 了解更多 近年来&#xff0c;随着互联网技术的不断发展,网络已经成为企业运营的基础设施。然而,复杂多变的网络环境也给企业的网络管理带来了新的挑战。如何快…

Mybatis进阶2

Mybatis进阶1-CSDN博客 Mybatis入门-CSDN博客 Mybatis入门2-CSDN博客 我们接下来要学习Mybatis的高级查询 我们先在数据库中准备我们需要的数据表 teacher表 课程表&#xff1a;与教师表是一对多的关系&#xff0c;所以有一个外键字段 学生表 由于学生表和课程表是多对多的…

PHP ASCII码的字符串用mb_convert_encoding 转utf-8之后不生效

检测数据类型是ascii,转码之后再检测还是utf-8没生效 private function toUTF8($str){$encode mb_detect_encoding($str, array("ASCII",UTF-8,"GB2312","GBK",BIG5,LATIN1));if ($encode ! UTF-8) {$str1 mb_convert_encoding($str, UTF-8, …

【JAVA项目】基于个人需求和地域特色的【外卖推荐系统】

技术简介&#xff1a;采用B/S架构、ssm 框架、Java技术、MySQL等技术实现。 系统简介&#xff1a;统权限按管理员&#xff0c;商家和用户这三类涉及用户划分。(a) 管理员&#xff1b;管理员使用本系统涉到的功能主要有&#xff1a;首页&#xff0c;个人中心&#xff0c;用户管理…

[VulnHub靶机渗透] Hackademic: RTB1

&#x1f36c; 博主介绍&#x1f468;‍&#x1f393; 博主介绍&#xff1a;大家好&#xff0c;我是 hacker-routing &#xff0c;很高兴认识大家~ ✨主攻领域&#xff1a;【渗透领域】【应急响应】 【Java、PHP】 【VulnHub靶场复现】【面试分析】 &#x1f389;点赞➕评论➕收…

原型模式和建造者模式

1、原型模式 1.1 概念 用一个已经创建的实例作为原型&#xff0c;通过复制该原型对象来创建一个和原型对象相同的新对象。 1.2 结构 原型模式包含如下角色&#xff1a; 抽象原型类&#xff1a;规定了具体原型对象必须实现的的 clone() 方法。 具体原型类&#xff1a;实现抽…

数据结构===二叉树

文章目录 概要二叉树的概念分类存储遍历前序中序后序 小结 概要 简单写下二叉树都有哪些内容&#xff0c;这篇文章要写什么 二叉树的概念分类&#xff0c;都有哪些二叉树遍历 对一个数据结构&#xff0c;最先入手的都是定义&#xff0c;然后才会有哪些分类&#xff0c;对二叉…

【Python】字符串

1. 字符串读取、拼接、匹配、随机生成 2. ‘’.join()连接字符串 3. 使用了random随机函数 4. 字符串列表里面使用判断语句调用函数 1、输入一个字符串,将该字符串中下标为偶数的字符组成新串并通过字符串格式化方式显示。 def get_even_indexed_chars(s):# 使用…

docker Harbor私有仓库部署管理

搭建本地私有仓库&#xff0c;但是本地私有仓库的管理和使用比较麻烦&#xff0c;这个原生的私有仓库并不好用&#xff0c;所以我们采用harbor私有仓库&#xff0c;也叫私服&#xff0c;更加人性化。 一、什么是Harbor Harbor是VWware 公司开源的企业级Docker Registry项…