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. 神经网络优化篇:详解如何训练一个 Softmax 分类器(Training a Softmax classifier)

    如何训练一个 Softmax 分类器 回忆一下之前举的的例子,输出层计算出的\(z^{[l]}\)如下,\(z^{[l]} = \begin{bmatrix} 5 \\ 2 \\ - 1 \\ 3 \ ...

  2. 20.3 DLL入口函数--《Windows核心编程》

    如果在执行一些与进程或者线程有关的初始化或者销毁工作的时候,需要 DllMain.如果只需要创建一个包含资源的DLL,不需要这个函数. B00L WINAPI DllMain(HINSTANCE hi ...

  3. Cnpack ctrl+alt+v 来回切换 变量声明区,和代码写区,非常方便

    Cnpack ctrl+alt+v 来回切换 变量声明区,和代码写区,非常方便 非常方便

  4. IDEA中使用ChatGPT

    IDEA中使用ChatGPT 在IDEA中安装ChatGPT插件,可以帮助写基础逻辑代码,提高工作效率和学习效率,有兴趣可以玩一下. 插件名为 Bito. 1. 什么是Bito Bito是一款在Int ...

  5. 【Unity3D】碰撞体组件Collider

    1 前言 ​ Unity3D 中碰撞体(Collider)组件用于检测运动的物体之间是否发生碰撞,也可以作为触发器使用.产生碰撞的条件是: 2 个游戏对象都有 Collider 至少有一个游戏对象有 ...

  6. redis7源码分析:redis 多线程模型解析

    多线程模式中,在main函数中会执行InitServerLast void InitServerLast() { bioInit(); // 关键一步, 这里启动了多条线程,用于执行命令,redis起 ...

  7. ADVMP 三代壳(vmp加固)原理分析(加壳流程)

    开源项目地址 https://github.com/chago/ADVMP vmp 加固可以说时各大加固厂商的拳头产品了,这个开源项目虽然不是十分完善,让我们可以一览vmp加固的原理,是十分好的学习资 ...

  8. 案例分享:Qt便携式致病菌快速检测仪(账号管理、实验过程、二维图表、历史数据、通讯管理、实验报告、中英文等等)

    需求   根据提供的用户原型设计.ui设计.通讯协议研发便携式致病菌快速检测仪器软件.  100%还原ui.   基本主功能(推荐visio:★★★☆☆,前期主流程需求整理)          Dem ...

  9. ASP.NET 跨域配置

    报错信息 The 'Access-Control-Allow-Origin' header is present on the requested resource 解决方案 web.config配置 ...

  10. 第119篇: JavaScript 类

    好家伙,我们先来复习一下   关于Java,类的三大特征: 1.封装,也就是把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的进行信息隐藏. 2.继承,继承性更 ...