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. WebAssembly核心编程[4]: Memory

    由于Memory存储的是单纯的二进制字节,所以原则上我们可以用来它作为媒介,在wasm模块和数组程序之间传递任何类型的数据.在JavaScript API中,Memory通过WebAssembly.M ...

  2. Linux-yum卸载软件包

    yum是Linux操作系统中最常用的软件包管理器之一,它可以帮助你很容易地安装.删除和更新软件包.然而,有时候yum在删除软件包时可能会出现一些问题,本文将告诉你如何正确地使用yum卸载软件包,并解决 ...

  3. 吉特日化MES 与周边系统集成架构

    作者:情缘   出处:http://www.cnblogs.com/qingyuan/ 关于作者:从事仓库,生产软件方面的开发,在项目管理以及企业经营方面寻求发展之路 版权声明:本文版权归作者和博客园 ...

  4. Javascript中的var变量声明作用域问题

    先看一下这两段代码的执行结果 var name2 = 'What!'; function a() { if (typeof name2 === 'undefined') { console.log(' ...

  5. eclipse项目右击找不到build path

    右击项目–>properties–>Project Facets–>勾选右侧的Java,然后保存. 此时再操作就有了.

  6. RAID 10磁盘阵列实践

    RAID概述 RAID技术通过把多个硬盘设备组合成一个容量更大.安全性更好的磁盘阵列,利用分散读写技术来提升磁盘阵列整体的性能,同时把多个重要数据的副本同步到不同的物理硬盘设备上,从而起到了非常好的数 ...

  7. 安装Standalone模式HBase

    所谓Standalone模式HBase,就是只启动一个JVM进程,在这个进程中同时启动了多个后台角色,如:HMaster,单个HRegionServer,以及ZooKeeper服务. 下载安装 最新版 ...

  8. 案例分享:某品牌音响系列协议调试工具(搜寻主机,查询通道,基本控制API,云音乐API,语言节目API等,可增删改指令)

    需求   某音响品牌需要一套完整的协议调试工具,提供给研发人员,渠道商,客户,现场人员等使用:  1.使用sqlite3数据库存储协议,  2.搜寻主机,操作主机:  3.探测云端API,调试API: ...

  9. Kotlin return@xxx 的坑

    Kotlin Return 到标签 先看例子: (1..5).forEach { if (it == 3) { return@forEach } println(it) } println(" ...

  10. 【图论#02】岛屿系列题(数量、周长、最大面积),flood fill算法的代码实现与优化

    岛屿数量 给你一个由 '1'(陆地)和 '0'(水)组成的的二维网格,请你计算网格中岛屿的数量. 岛屿总是被水包围,并且每座岛屿只能由水平方向和/或竖直方向上相邻的陆地连接形成. 此外,你可以假设该网 ...