npm包安装与管理:深入解析命令行工具的全方位操作指南,涵盖脚本执行与包发布流程

在这里插入图片描述

npm,全称为Node Package Manager,是专为JavaScript生态系统设计的软件包管理系统,尤其与Node.js平台紧密关联。作为Node.js的默认包管理工具,npm为开发者提供了便捷的方式来安装、共享、分发和管理代码模块。

npm作为JavaScript世界不可或缺的基础设施,极大地促进了代码复用和协作。

一、npm包安装与管理

1. 安装包

  • 命令: npm install <package-name>

  • 作用: 安装指定的npm包作为项目依赖。

  • 例子:

    $ npm install express
    

    默认情况下,这会将包安装在node_modules目录下,并且如果项目中有package.json文件,还会将该包添加到dependencies字段。

  • 全局安装:

    $ npm install -g <package-name>
    

    使用 -g--global 参数进行全局安装,这样可以在系统全局范围内访问这个包,而不是仅限于当前项目。

2. 保存依赖

  • 命令: 自npm 5.0.0以后,--save--save-dev已经成为默认行为,无需显式指定。
    • npm install <package-name> 相当于 npm install <package-name> --save,将包添加到dependencies
    • npm install <package-name> --save-dev 将包添加到devDependencies,适用于开发阶段需要但生产环境中不需要的工具。

3. 更新依赖

  • 命令: npm update <package-name>
  • 作用: 更新指定包至最新版本(符合package.json中指定的版本范围)。
  • 例子:
    $ npm update express
    

4. 查看已安装包

  • 命令: npm list
  • 作用: 列出当前项目所有已安装的依赖及其版本。
  • 例子:
    $ npm list
    
  • npm list --depth=0: 只列出顶级依赖,不显示子依赖。

5. 搜索包

  • 命令: npm search <query>
  • 作用: 在npm仓库中搜索包含给定关键词的包。
  • 例子:
    $ npm search express
    

6. 清除缓存

  • 命令: npm cache clean --force(旧版)或 npm cache clean --all(新版)
  • 作用: 清除npm的本地缓存。
  • 例子:
    $ npm cache clean --force
    

7. 版本管理

  • 命令: npm version <semver>
  • 作用: 更新项目版本号(遵循语义化版本控制SemVer规则,如patchminormajor)。
  • 例子:
    $ npm version patch
    
  • npm outdated: 显示项目中过时的依赖包。

8. 卸载包

- `npm uninstall <package-name>`:卸载本地项目的一个包。
- `npm uninstall -g <package-name>`:卸载全局安装的包。

9.设置和查询配置

  • npm config set <key> <value>:设置npm配置项。
  • npm config get <key>:查询npm配置项的值。
  • npm config ls:列出所有的npm配置。

10.其他

  • npm audit:检查项目依赖是否存在已知安全漏洞。
  • npm shrinkwrapnpm lock(在npm 5+中引入package-lock.json):锁定依赖版本,确保每次安装都得到一致的结果。

二、npm镜像源设置

在国内使用npm(Node Package Manager)时,由于地理位置和网络限制,直接从npm官方源下载包可能会比较慢。为了提升下载速度和稳定性,很多国内的公司和组织提供了npm的镜像服务。以下是一些国内常用的优秀npm镜像源推荐及使用方法:

  1. 淘宝NPM镜像

    • 搜索地址:http://npm.taobao.org/

    • Registry 地址:https://registry.npm.taobao.org/

    • 使用方法:

      • 临时使用
        npm --registry=https://registry.npm.taobao.org install <package-name>
        
      • 持久使用
        npm config set registry https://registry.npm.taobao.org
        
    • 腾讯云NPM镜像
      Registry 地址:https://mirrors.cloud.tencent.com/npm/

    • 华为云NPM镜像
      Registry 地址:https://mirrors.huaweicloud.com/repository/npm/

    • 阿里云NPM镜像
      Registry 地址:https://registry.npm.alibaba.com/

  2. cnpmjs镜像

    • Registry 地址:http://r.cnpmjs.org/
    • 可以通过cnpm客户端(一个基于npm的增强版命令行工具)来使用它,首先安装cnpm:
      npm install -g cnpm --registry=https://registry.npm.taobao.org
      
      然后直接使用cnpm替代npm命令。

要检查当前使用的npm镜像源,可以运行以下命令:

npm config get registry

要恢复到官方源,只需设置回官方Registry地址:

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

注意:由于互联网服务可能发生变化,请在使用前访问各镜像网站确认最新的使用指南和地址。同时,不同镜像的同步策略和服务状态也可能有所差异,请根据实际需求选择合适的镜像源。

三、npm脚本运行

npm(Node Package Manager)允许用户在package.json文件中定义自定义脚本,这些脚本可以通过npm run命令来执行。这一特性使得项目管理和自动化任务变得极为方便,比如构建项目、运行测试、启动开发服务器、部署应用等等。
- 命令: npm run <script-name>
- 作用: 根据package.json中的scripts字段执行预定义的脚本。
- 例子:

示例1:基本脚本命令

// package.json 文件片段
{"name": "my-project","version": "1.0.0","scripts": {"start": "node app.js", // 启动应用程序"build": "webpack --mode production", // 使用webpack进行生产环境构建"test": "jest", // 运行Jest测试套件"lint": "eslint .", // 使用ESLint检查代码规范"serve": "vue-cli-service serve", // Vue CLI项目启动本地开发服务器"format": "prettier --write '**/*.{js,jsx,json,css,md}'" // 格式化代码},// ... 其他字段
}

如何运行这些脚本?

对于上述package.json文件中的每个脚本,你可以通过如下命令来运行它们:

  • 启动应用程序:
npm run start
  • 其他命令
npm run build //构建项目
npm run test //运行测试
npm run lint //检查代码规范
npm run serve //启动本地开发服务器
npm run format //格式化代码
  • npm run会创建一个新的shell来执行指定的脚本命令,所以你可以像在shell脚本中那样使用管道(|)、重定向(>>>)、逻辑运算符(&&||)等。
  • 可以通过npm run-script <script-name>的方式来代替npm run <script-name>,但后者更为常见和简洁。
  • 有些脚本名称具有特殊含义,例如prebuildpostbuild会在build脚本前后自动执行。
  • 参数传递:若要向脚本传递参数,可以使用--分隔符,例如:npm run my-script -- --arg1 value1 --arg2 value2

示例2:传递参数和环境变量

在npm脚本中还可以传递参数和使用环境变量。
若要向脚本传递参数,可以使用–分隔符,例如:npm run my-script – --arg1 value1 --arg2 value2。

"scripts": {"env-test": "node script.js $npm_config_env_variable",
}

运行脚本并传入环境变量:

npm run env-test -- --env-variable=value

这里,$npm_config_env_variable将会被替换为--env-variable=value传入的值。

示例3:组合多个命令

如果你需要执行一系列命令,可以使用&&符号连接多个命令,或者使用npm-run-all等第三方包来并行或顺序执行脚本:

"scripts": {"deploy": "npm run build && npm run deploy-to-server",
}

在上述示例中,npm run deploy将会先执行build脚本,成功后再执行deploy-to-server脚本。

通过这种方式,npm脚本极大地增强了项目自动化能力,使得开发者能够更好地组织和执行项目生命周期中的各个步骤。

三. npm包制作发布

创建自己的npm包并成功发布、维护至npm官方网站,可以连接全球范围内的开发者、包作者与使用者,共同推动着Node.js生态的繁荣与发展。

  • 命令: npm publish
  • 作用: 将当前目录下符合npm发布要求的包发布到npm仓库。
  • 前提: 已经登录npm账户 (npm login),并且当前目录下有合法的package.jsonREADME.md等文件。

具体请查看《如何开发创建自己的npm包并成功发布、维护至npm官方网站

以上命令仅覆盖了npm部分基础和常用的功能,实际使用时还有许多其他命令可供探索,包括但不限于删除包、查看包信息、链接本地包等。建议查阅npm官方文档获取完整信息。

在这里插入图片描述

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

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

相关文章

CKA 基础操作教程(五)

Kubernetes Ingress 理论学习 Ingress 提供从集群外部到集群内服务的 HTTP 和 HTTPS 路由。 流量路由由 Ingress 资源所定义的规则来控制。 Ingress 资源示例&#xff1a; apiVersion: networking.k8s.io/v1 # 指定 Kubernetes 中使用的 API 版本 kind: Ingress # 指定对象…

[dvwa] CSRF

CSRF 0x01 low 跨站&#xff0c;输入密码和确认密码直接写在url中&#xff0c;将连接分享给目标&#xff0c;点击后修改密码 社工方式让目标点击短链接 伪造404页&#xff0c;在图片中写路径为payload&#xff0c;目标载入网页自动请求构造链接&#xff0c;目标被攻击 http…

吴恩达深度学习笔记:深层神经网络(Deep Neural Networks)4.5-4.8

目录 第一门课&#xff1a;神经网络和深度学习 (Neural Networks and Deep Learning)第四周&#xff1a;深层神经网络(Deep Neural Networks)4.5 为什么使用深层表示&#xff1f;&#xff08;Why deep representations?&#xff09; 第一门课&#xff1a;神经网络和深度学习 (…

设计模式之观察者模式讲解

概念&#xff1a;定义对象间一种一对多的依赖关系&#xff0c;使得当每一个对象改变状态&#xff0c;则所有依赖于它的对象都会得到通知并被自动更新。 抽象主题&#xff1a;或者叫被观察者&#xff0c;可以持有、增加、删除观察者对象。具体主题&#xff1a;实现抽象主题定义的…

一部手机游全国|打造文旅云平台,开启智慧旅游新篇章

随着移动互联网的迅猛发展&#xff0c;旅游业在不断寻求创新与变革&#xff0c;旅游小程序作为智慧文旅的一个终端&#xff0c;在智慧推荐、智慧票务、智慧导览、智慧服务、虚拟体验等方面上&#xff0c;都具备发展潜力。小程序的出现&#xff0c;则从根本上大大提升了景区智慧…

如何快速开启一个项目-ApiHug - API design Copilot

ApiHug101-001开启篇 &#x1f917; ApiHug {Postman|Swagger|Api...} 快↑ 准√ 省↓ GitHub - apihug/apihug.com: All abou the Apihug apihug.com: 有爱&#xff0c;有温度&#xff0c;有质量&#xff0c;有信任ApiHug - API design Copilot - IntelliJ IDEs Plugin |…

数据库——实验6 视图的创建与使用

1. 视图的定义 视图是根据需要以一个表或多个表为基础&#xff0c;选择满足一定条件的行或列数据的静态定义。它是一种逻辑对象&#xff0c;是一种虚拟表。视图并不生成行或列的永久副本&#xff0c;并不占用存储空 间&#xff0c;也就是说&#xff0c;视图就是保存在数据库中…

探索算力(云计算、人工智能、边缘计算等):数字时代的引擎

引言 在数字时代&#xff0c;算力是一种至关重要的资源&#xff0c;它是推动科技创新、驱动经济发展的关键引擎之一。简而言之&#xff0c;算力即计算能力&#xff0c;是计算机系统在单位时间内完成的计算任务数量或计算复杂度的度量。随着科技的不断发展和应用范围的不断扩大…

nginx到底是怎么工作的

工作流程 用户通过域名发出访问Web服务器的请求&#xff0c;该域名被DNS服务器解析为反向代理服务器的IP地址反向代理服务器接受用户的请求反向代理服务器在本地缓存中查找请求的内容&#xff0c;找到后直接把内容发送给用户如果本地缓存里没有用户所请求的信息内容&#xff0…

工地安全监测识别摄像机

工地安全监测识别摄像机是一种在建筑工地和施工现场广泛使用的智能监控设备&#xff0c;主要用于监测施工过程中可能出现的安全隐患和违规行为&#xff0c;以确保工地人员和设备的安全。通过高清摄像头、智能算法和远程监控系统的结合&#xff0c;该摄像机可以实时监测工地各个…

功能测试_验证qq账号的合法性

案例&#xff1a;验证qq账号的合法性&#xff08;要求&#xff1a;6-10位的自然数&#xff09; 使用等价类设计用例案例&#xff1a; 步骤&#xff1a; 1:明确需求&#xff1a;qq账号的合法性 2:划分等价类&#xff1a;有效等价类、有效取值、无效等价类、无效取值 3&…

LeetCode第十五题:三数之和【15/1000 python】

&#x1f464;作者介绍&#xff1a;10年大厂数据\经营分析经验&#xff0c;现任大厂数据部门负责人。 会一些的技术&#xff1a;数据分析、算法、SQL、大数据相关、python 作者专栏每日更新&#xff1a; LeetCode解锁1000题: 打怪升级之旅 LeetCode解锁1000题: 打怪升级之旅htt…

rabbitmq的介绍和交换机类型

rabbitmq的介绍和交换机类型 1.流程 首先先介绍一个简单的一个消息推送到接收的流程&#xff0c;提供一个简单的图 黄色的圈圈就是我们的消息推送服务&#xff0c;将消息推送到 中间方框里面也就是 rabbitMq的服务器&#xff0c;然后经过服务器里面的交换机、队列等各种关系…

k8s存储卷 PV与PVC 理论学习

介绍 存储的管理是一个与计算实例的管理完全不同的问题。PersistentVolume 子系统为用户和管理员提供了一组 API&#xff0c;将存储如何制备的细节从其如何被使用中抽象出来。为了实现这点&#xff0c;我们引入了两个新的 API 资源&#xff1a;PersistentVolume 和 Persistent…

亚信安慧AntDB:数据库技术的新里程碑

AntDB是一款灵活的数据处理平台&#xff0c;为用户提供了丰富多样的数据操作功能和更高效的数据存储方式。作为一款优秀的数据处理工具&#xff0c;AntDB不仅满足了用户对于数据操作的需求&#xff0c;更为用户提供了一个便捷、高效的数据管理平台。 AntDB拥有强大的数据处理能…

2024-04-08 NO.5 Quest3 手势追踪进行 UI 交互

文章目录 1 玩家配置2 物体配置3 添加视觉效果4 添加文字5 其他操作5.1 双面渲染5.2 替换图片 ​ 在开始操作前&#xff0c;我们导入先前配置好的预制体 MyOVRCameraRig&#xff0c;相关介绍在 《2024-04-03 NO.4 Quest3 手势追踪抓取物体-CSDN博客》 文章中。 1 玩家配置 &a…

淘宝开放API接口:卖家订单详情订单列表搭建供应链必备的API接口

buyer_order_detail-获取购买到的商品订单详情 接口注册测试 taobao.buyer_order_detail 公共参数 名称类型必须描述keyString是调用key&#xff08;必须以GET方式拼接在URL中&#xff09;secretString是调用密钥api_nameString是API接口名称&#xff08;包括在请求地址中&am…

高端大气自适应全屏酷炫渐变卡片html源码图片切换特效html5源码导航引导网站源码

源码特点&#xff1a; 1&#xff1a;手工书写DIVCSS、代码精简无冗余。 2&#xff1a;自适应结构&#xff0c;全球先进技术&#xff0c;高端视觉体验。 3&#xff1a;SEO框架布局&#xff0c;栏目及文章页均可独立设置标题/关键词/描述。 4&#xff1a;附带测试数据、安装教程、…

数据结构:构建完全二叉查找树

文章目录 1、步骤 1: 对给定数组排序2、步骤 2: 递归构建完全二叉查找树3、注意4、在有序数组中寻找根结点位置5、代码实现6、其他方法&#xff1f;基本思路插入操作删除操作特别考虑 对于一个给定序列的二叉查找树&#xff0c;有很多种&#xff0c;但是完全二叉查找树只有一种…

sql注入方式之联合注入

1.1 靶场环境 系统centos7 IP地址192.168.1.24 1.2 联合注入原理 联合查询注入是联合两个表进行注入攻击&#xff0c;使用关键词 union select 对两个表进行联合查询。两个表的字段要数要相同&#xff0c;不然会出现报错。 1.3 找注入点 找注入点&#xff0c;当输入id1 an…