只会npm install?这5个隐藏技巧让你效率翻倍!

原文链接:https://mp.weixin.qq.com/s/nijxVWj-E5U08DX2fl3vgg

最近有个刚学前端的小伙伴问我:“为什么我的node_modules这么大?为什么别人装依赖那么快?npx到底是啥玩意儿?”

相信不少人都跟他一样,对npm的认知还停留在“npm install”阶段。今天我就来分享几个超级实用的npm技巧,帮你摆脱依赖安装的噩梦!

一、package.json里的秘密

先来说说package.json这个文件,它可不仅仅是项目的身份证。

dependencies和devDependencies到底啥区别?

简单说就是:dependencies是项目运行时必须的依赖,比如react、vue这些。devDependencies是开发时才需要的,比如eslint、webpack这些打包工具。

看个例子就明白了:

{"dependencies": {"react": "^17.0.2",  // 项目运行必须"axios": "^0.21.1"   // 项目运行必须},"devDependencies": {"eslint": "^7.18.0",  // 只有开发时需要"webpack": "^5.11.0"  // 只有开发时需要}
}

版本号前的^和~有啥讲究?

这个特别重要!~表示允许小版本更新,^允许次版本更新。

举个例子:

  • ~1.2.3:可以更新到1.2.x,但不能到1.3.0
  • ^1.2.3:可以更新到1.x.x,但不能到2.0.0
{"dependencies": {"lodash": "~4.17.0",  // 只会更新到4.17.x"moment": "^2.29.0"   // 可以更新到2.x.x}
}

二、npm install的隐藏技巧

你是不是还在傻傻地等着npm install慢慢下载?试试这两个技巧:

1. 使用npm ci替代npm install

在CI/CD环境或者想要确保依赖一致时,用npm ci比npm install更靠谱:

npm ci  # 完全按照package-lock.json安装,速度更快更稳定

2. 离线优先模式

如果你之前安装过相同的依赖,可以这样加速:

npm install --prefer-offline  # 优先使用本地缓存

三、npx:不用全局安装也能运行命令

这是我最近发现的神器!以前要全局安装脚手架工具,现在用npx直接运行:

# 以前需要先全局安装
npm install -g create-react-app
create-react-app my-app# 现在直接用npx
npx create-react-app my-app  # 自动下载运行,用完即删

再举个例子,想用webpack但不想全局安装:

npx webpack --config webpack.config.js  # 临时使用webpack

四、安全漏洞检查

现在网络安全这么重要,npm也提供了安全检查功能:

npm audit  # 检查项目依赖的安全漏洞
npm audit fix  # 自动修复可修复的漏洞

如果发现严重漏洞,最好立即处理。我曾经有个项目就因为依赖的旧版本库有漏洞,差点出大事!

五、其他实用小技巧

清理缓存
有时候安装出问题,可能是缓存作祟:

npm cache clean --force  # 清理npm缓存

查看包信息
想了解某个包的信息?不用去官网:

npm view react  # 查看react包的详细信息

快速初始化项目
不想一步步回答npm init的问题?

npm init -y  # 一键生成默认package.json

实际工作场景示例

假设你要创建一个新的React项目并检查安全:

# 1. 创建项目目录
mkdir my-react-app
cd my-react-app# 2. 快速初始化
npm init -y# 3. 安装React(生产依赖)
npm install react react-dom# 4. 安装开发工具(开发依赖)
npm install -D webpack webpack-cli# 5. 检查安全漏洞
npm audit# 6. 如果有漏洞就修复
npm audit fix

写在最后

用了这些技巧后,我们团队的依赖安装时间平均减少了40%,再也不用对着node_modules发呆了。

其实工具用的好,真的能省下不少时间。这些技巧都是我踩了无数坑后总结出来的,希望对你也有帮助!

你还有什么好用的npm技巧?欢迎在评论区分享交流~

PS:如果你发现某个依赖安装特别慢,可以试试切换npm源到淘宝镜像,速度会快很多哦!

npm config set registry https://registry.npmmirror.com/

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

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

相关文章

(二).net面试(static)

文章目录项目地址一、基础501.1 new keyword1.2 static class vs. static method1. static class2. static method3. static constructor 静态构造函数4. 静态成员的生命周期1.3 LinQ1.what is LinQ2. List<T>、IEnumerable<T>、IQueryable<T>3. 在数据库里用…

docker,本地目录挂载

理解Docker本地目录挂载的基本概念Docker本地目录挂载允许容器与宿主机共享文件或目录&#xff0c;实现数据持久化和实时交互。挂载方式分为bind mount和volume两种&#xff0c;前者直接映射宿主机路径&#xff0c;后者由Docker管理存储路径。本地目录挂载的核心方法bind mount…

IO多路复用相关知识

select、poll、epoll 在传入的性能差异是不是体现在&#xff0c;当有新的连接过来&#xff0c;此时需要将新的fd传入到内核中&#xff0c;但是poll/select需要出入整个数组&#xff0c;而epoll方式只需要出入单个fd&#xff1f; 1. select/poll 的情况它们没有内核中“长期保存…

【CF】Day139——杂题 (绝对值变换 | 异或 + 二分 | 随机数据 + 图论)

B. Meeting on the Line题目&#xff1a;思路&#xff1a;数形结合首先考虑如果没有 t 的影响该怎么写显然我们就是让最大时间最小化&#xff0c;那么显然选择最左端点和最右端点的中间值即可&#xff0c;即 (mi mx) / 2&#xff0c;那么现在有了 t 该怎么办我们不妨考虑拆开绝…

在 Ubuntu 上安装和配置 PostgreSQL 实录

一、查看ubuntu版本 lsb_release -a postgresq尽量安装在新的稳定版本的ubuntu上 二、安装postgresql 2.1 直接安装 sudo apt install postgresql 结果如下 2.2 使用PPA源安装 Ubuntu官方源提供了PostgreSQL的PPA(Personal Package Archive),通过PPA源安装可以确保获取…

WebGIS三维可视化 + 数据驱动:智慧煤仓监控系统如何破解煤炭仓储行业痛点

目录 一、项目背景&#xff1a;煤炭仓储管理的痛点与转型需求 二、建设意义&#xff1a;从 “被动管理” 到 “主动掌控” 的价值跃迁 三、项目核心&#xff1a;技术架构与核心目标的深度融合 四、数据与技术&#xff1a;系统稳定运行的 “双支柱” &#xff08;一&#x…

使用 Spring Security 实现 OAuth2:一步一步的操作指南

前言 OAuth 是一种授权框架&#xff0c;用于创建权限策略&#xff0c;并允许应用程序对用户在 HTTP 服务&#xff08;如 GitHub 和 Google&#xff09;上的账户进行有限访问。它的工作原理是允许用户授权第三方应用访问他们的数据&#xff0c;而无需分享他们的凭证。本文将指导…

VMware共享文件夹设置

启用共享文件夹 编辑虚拟机设置-选项-共享文件夹&#xff0c;上面的选项选择启用下面点击添加一个路径&#xff0c;跟着向导走 设置共享文件夹在主机的路径&#xff0c;和文件夹名称添加完成后可以点击这个共享文件夹条目&#xff0c;查看属性虚拟机里安装vm-tools sudo apt up…

华为云昇腾云服务

华为云&#xff0c;一切皆服务共建智能世界云底座面向未来的智能世界&#xff0c;数字化是企业发展的必由之路。数字化成功的关键是以云原生的思维践行云原生&#xff0c;全数字化、全云化、AI驱动&#xff0c;一切皆服务。华为云将持续创新&#xff0c;携手客户、合作伙伴和开…

Axum 最佳实践:如何构建优雅的 Rust 错误处理系统?(三)

引言 作为开发者&#xff0c;我们都经历过这样的场景&#xff1a;项目上线后&#xff0c;你打开日志监控&#xff0c;铺天盖地的 500 Internal Server Error 扑面而来。这些错误像个黑洞&#xff0c;吞噬着你的调试时间&#xff0c;你甚至不知道它们是从数据库查询失败&#x…

MySQL高可用方案解析:从复制到云原生

MySQL 的高可用 (High Availability, HA) 方案旨在确保数据库服务在硬件故障、软件崩溃、网络中断或计划维护时仍能持续可用&#xff0c;最小化停机时间&#xff08;通常目标为 99.9% 至 99.999% 可用性&#xff09;。以下是 MySQL 领域成熟且广泛应用的几种主流高可用方案&…

腾讯云语音接口实现会议系统

1.前言 在现代企业协作环境中&#xff0c;高效的会议管理是提升团队生产力的关键。本文将深入解析一个完整的会议管理系统&#xff0c;涵盖从会议创建到总结生成的完整生命周期。该系统构建一个基于AI技术的智能会议系统&#xff0c;实现会议全流程的智能化管理&#xff0c;包括…

【LeetCode 每日一题】1277. 统计全为 1 的正方形子矩阵

Problem: 1277. 统计全为 1 的正方形子矩阵 文章目录整体思路完整代码时空复杂度时间复杂度&#xff1a;O(m * n)空间复杂度&#xff1a;O(m * n)整体思路 这段代码旨在解决一个经典的二维矩阵问题&#xff1a;统计全为 1 的正方形子矩阵个数 (Count Square Submatrices with …

【论文阅读】MedResearcher-R1: 基于知识引导轨迹合成框架的专家级医学深度研究员

论文链接&#xff1a;https://arxiv.org/pdf/2508.14880 【导读】当通用大模型还在“背题库”时&#xff0c;蚂蚁集团联合哈工大推出的 MedResearcher-R1 已把“临床查房”搬进训练场&#xff01;这篇 2025 年 9 月发布的论文&#xff0c;首次让开源 32B 模型在医学深度研究基准…

基于大语言模型的事件响应优化方案探索

程序员的技术管理推荐阅读 当愿望遇上能力鸿沟&#xff1a;一位技术管理者眼中的团队激励思考 从“激励”到“保健”&#xff1a;80后与90后程序员&#xff0c;到底想要什么&#xff1f; 从“激励”到“保健”&#xff1a;80后与90后程序员&#xff0c;到底想要什么&#xff1f…

数字化浪潮下,传统加工厂如何智能化转型?

在制造业向高端化、服务化升级的今天&#xff0c;传统加工厂正面临前所未有的挑战。订单碎片化、人力成本攀升、设备OEE&#xff08;综合效率&#xff09;长期低于50%、质量波动难以追溯……这些痛点不仅压缩着企业利润空间&#xff0c;更让其在应对市场需求变化时显得迟缓。当…

谓语动词选择指南

文章目录谓语动词的重要性谓语动词类别一. 助动词1. be&#xff08;am, is, are, was, were, been, being&#xff09;表示 存在、状态、身份、特征。2. have&#xff08;have, has, had&#xff09;表示 拥有、经历 或 完成时态的助动词。3. do&#xff08;do, does, did&…

代码随想录学习摘抄day7(二叉树11-21)

一个朴实无华的目录题型226.翻转二叉树思路&#xff1a;把每一个节点的左右孩子交换一下101. 对称二叉树思路&#xff1a;使用队列来比较两个树&#xff08;根节点的左右子树&#xff09;是否相互翻转222.完全二叉树的节点个数思路&#xff1a;本题直接就是求有多少个节点&…

Python+DRVT 从外部调用 Revit:批量创建楼板

今天继续批量创建常用的基础元素&#xff1a;楼板。这次以简单的轮廓为矩形的楼板为例。让我们来看一看如何让Revit自动干活&#xff1a; from typing import List import math # drvt_pybind 支持多会话、多文档&#xff0c;先从简单的单会话、单文档开始 # MyContext是在Pyt…

猿辅导数据分析面试题及参考答案

给定用户成绩表,编写SQL查询排名靠前的用户(例如前10名),并说明rank()和dense_rank()的区别。 要查询成绩表中排名靠前的用户(如前10名),需先明确排名依据(通常为成绩降序),再通过排序和限制结果行数实现。假设用户成绩表名为user_scores,包含user_id(用户ID)和s…