npm是什么?

npm是一个强大的包管理工具,它使开发人员能够轻松地安装、更新和管理项目依赖的包。通过初始化一个package.json 文件,我们可以描述你的项目并记录其依赖关系。使用npm install命令,我们可以安装和管理包。使用npm publish命令,我们可以发布自己的包(由于日常很少涉及发布自己的包,这里就不总结了)。无论是在开发过程中还是在分享你的包时,npm都提供了丰富的功能和命令来满足你的需求。

但是在日常搜索网上文章时,发现网上的文章总结的一大堆,而这个npm很多时候对于我们来说就是一个工具,并不涉及多么高深的学习,所以,我这里的这篇文章就进行高度概括的总结,力争通过这一篇文章让大家会用npm。

npm安装&升级

npm不需要单独安装。在安装Node的时候,会连带一起安装npm。但是,Node附带的npm可能不是最新版本,最后用下面的命令,更新到最新版本。

$ sudo npm install npm@latest -g

如果是 Window 系统使用以下命令即可:

npm install npm -g

然后,运行下面的命令,查看各种信息。

# 查看 npm 命令列表
$ npm help # 查看各个命令的简单用法
$ npm -l # 查看 npm 的版本
$ npm -v # 查看 npm 的配置
$ npm config list -l

解决下载包慢的问题

因为npm的包服务器在国外,在国内速度很慢且不稳定,所以在国内就有很多企业架设了国内的镜像,方便国内开发者使用,日常过程中,我们经常使用的是淘宝的镜像源,通过以下命令进行配置即可:

// 1. 清空缓存
npm cache clean --force // 2. 切换新源
npm config set registry https://registry.npmmirror.com

配置全局依赖的保存路径&缓存路径

一般情况下,我们都会对全局包保存路径和缓存路径进行自定义,自定义方式如下:

在想要保存的目录下新建【node_global】及【node_cache】文件夹,然后执行以下两条命令:

npm config set prefix "/Users/Jelly/Repository/node_global"
npm config set cache "/Users/Jelly/Repository/node_cache"

npm常用指令

命令 说明
npm init 初始化一个新的npm项目,并生成package.json文件
npm install 安装项目依赖的所有包
npm install <package> 安装指定的包
npm install --save <package> 安装指定的包,并将其添加到dependencies字段中
npm install --save-dev <package> 安装指定的包,并将其添加到devDependencies字段中
npm uninstall <package> 卸载指定的包
npm update 更新项目依赖的所有包
npm update <package> 更新指定的包
npm run <script> 运行package.json文件中定义的脚本
npm search <keyword> 搜索包
npm ls 列出项目依赖的所有包
npm cache clear 清空缓存

常用的命令就上表中的那么几个,基本覆盖了我们日常90%的场景,如果遇到不在上表中的,再上网搜索就OK了。

npm installnpm install -g的区别

npm install说明:

  • npm install是针对当前项目进行包安装,当执行npm install package-name时,npm会自动下载并安装指定的依赖包,并将包保存到项目的node_modules目录中;
  • 使用npm install命令时,如果当前目录下存在一个package.json文件,那么npm会自动将安装的依赖包加入到package.json文件的dependencies字段中。

npm install -g说明:

  • npm install -g命令用于全局安装npm包,npm包可以作为全局命令行工具使用,比如vue-clicreate-react-app等。这些工具在命令行中可以直接调用,而不需要在每个项目中都单独安装;
  • 全局安装的npm包会被安装到全局的node_modules目录中,可以通过npm root -g命令查看全局node_modules的路径。

npm install --savenpm install --save-dev的区别

npm install --save说明:

  • 安装项目正常运行所必需的包。在项目发布时,依赖包的安装和版本信息会被自动读取,确保项目在其他环境中的正确运行;
  • 安装依赖包,并将依赖包信息保存到package.json文件的dependencies字段中。

npm install --save-dev说明:

  • 安装开发环境所需的依赖包。这些依赖包通常是项目开发过程中需要用到的工具、测试框架、模拟数据等;
  • 安装依赖包,并将依赖包信息保存到package.json文件的devDependencies字段中。

总结

很多时候,对于很多知识,我们只需要掌握并且能熟练使用即可,并不需要深入其背后去了解原理,而这篇文章就是这样的一篇入门级保姆文章,一篇让你掌握并学会使用npm。

短小精悍的npm入门级保姆教程,一篇包会的更多相关文章

  1. Flow简易教程——安装篇

    .mydoc_h1{ margin: 0 0 1em; } .mydoc_h1_a{ color: #2c3e50; text-decoration: none; font-size: 2em; } ...

  2. Mac 配置教程-开发篇

    将 Mac 日常使用的软件和开发软件区分开,将之前写的 Mac 配置的文章分成了两篇: Mac 配置教程-日常篇 Mac 配置教程-开发篇 图床 iPic 设置快捷键 Command+Shift+u ...

  3. C++混合编程之idlcpp教程Python篇(9)

    上一篇在这 C++混合编程之idlcpp教程Python篇(8) 第一篇在这 C++混合编程之idlcpp教程(一) 与前面的工程相比,工程PythonTutorial7中除了四个文件PythonTu ...

  4. C++混合编程之idlcpp教程Lua篇(9)

    上一篇在这 C++混合编程之idlcpp教程Lua篇(8) 第一篇在这 C++混合编程之idlcpp教程(一) 与前面的工程相比,工程LuaTutorial7中除了四个文件LuaTutorial7.c ...

  5. C++混合编程之idlcpp教程Python篇(8)

    上一篇在这 C++混合编程之idlcpp教程Python篇(7) 第一篇在这 C++混合编程之idlcpp教程(一) 与前面的工程相似,工程PythonTutorial6中,同样加入了四个文件:Pyt ...

  6. C++混合编程之idlcpp教程Lua篇(8)

    上一篇在这 C++混合编程之idlcpp教程Lua篇(7) 第一篇在这 C++混合编程之idlcpp教程(一) 与前面的工程相似,工程LuaTutorial6中,同样加入了四个文件:LuaTutori ...

  7. C++混合编程之idlcpp教程Python篇(7)

    上一篇在这 C++混合编程之idlcpp教程Python篇(6) 第一篇在这 C++混合编程之idlcpp教程(一) 与PythonTutorial4工程相似,工程PythonTutorial5中,同 ...

  8. C++混合编程之idlcpp教程Lua篇(7)

    上一篇在这 C++混合编程之idlcpp教程Lua篇(6) 第一篇在这 C++混合编程之idlcpp教程(一) 与LuaTutorial4工程相似,工程LuaTutorial5中,同样加入了四个文件: ...

  9. C++混合编程之idlcpp教程Python篇(6)

    上一篇在这 C++混合编程之idlcpp教程Python篇(5) 第一篇在这 C++混合编程之idlcpp教程(一) 工程PythonTutorial4中加入了四个文件:PythonTutorial4 ...

  10. C++混合编程之idlcpp教程Lua篇(6)

    上一篇在这 C++混合编程之idlcpp教程Lua篇(5) 第一篇在这 C++混合编程之idlcpp教程(一) 工程LuaTutorial4中加入了四个文件:LuaTutorial4.cpp, Tut ...

随机推荐

  1. DNS子域委派配置·

    实验介绍:DNS子域委派的作用 子域即为主域下的一个子域名,当一个子域的流量过大时,主域的DNS服务器可以把一个子域的查询授权给一台专门的子域服务器 注意被委派的服务器必须是委派服务器的子域服务器. ...

  2. 使用HttpServletResponse实现curl接口时控制台输出(续)

    上一篇文章的问题 在上一篇文章 Spring Boot RestController接口如何输出到终端 中讨论了如何使用 HttpSerlvetResponse 写入输出流,使应急接口通过 curl ...

  3. CF1907

    A 模拟. B 模拟. C 若原字符串中出现次数最多的次数为 \(cnt\),答案是 \(\max(n\%2,cnt\times 2-n)\). D 二分 \(k\),然后从后往前倒,计算出到达每个线 ...

  4. 什么是TDD(一)

    引子 回顾 虽然我很早以前就听说单元测试,也曾经多次在项目中引入单元测试框架和单元测试的实践为代码质量的提升带来了一丝助力. 但这种方式更多的是从软件调试的角度出发,即将单元测试作为一种测试方法可用性 ...

  5. Pandas日期时间格式化

    当进行数据分析时,我们会遇到很多带有日期.时间格式的数据集,在处理这些数据集时,可能会遇到日期格式不统一的问题,此时就需要对日期时间做统一的格式化处理.比如"Wednesday, June ...

  6. 2023年多校联训NOIP层测试2

    2023年多校联训NOIP层测试2 爆零了 T1 HDU 4786 Fibonacci Tree \(0pts\) @wangyunbiao: 不可以,总司令 我:不,可以,总司令 @wangyunb ...

  7. NC16810 [NOIP1999]拦截导弹

    题目链接 题目 题目描述 某国为了防御敌国的导弹袭击,发展出一种导弹拦截系统.但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能高于前一发的高度.某天,雷达 ...

  8. test-02-java 单元测试框架 junit5 入门介绍

    拓展阅读 junit5 系列 基于 junit5 实现 junitperf 源码分析 Auto generate mock data for java test.(便于 Java 测试自动生成对象信息 ...

  9. Oracle高级队列介绍

    原始链接:http://www.oracle-developer.net/display.php?id=411 oracle高级队列介绍 高级队列Advanced Queuing(AQ)在oracle ...

  10. Java并发编程实例--15.在同步代码块中使用条件

    并发编程中有个经典问题: 生产消费者问题. 我们有一个数据缓冲区,一个或多个生产者往其中存入对象,另外一个或多个消费者从中取走. 因此,该数据缓冲区是一个共享数据结构,我们需要对其添加读取同步机制,但 ...