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. Delphi-判断一个对象是否释放,改造官方的Assigned

    直接上例子了,基础知识自己去了解,首先定义一个类: TPerson = class public name: string; age: Integer; constructor Create(name ...

  2. Linux--split命令(将一个大文件拆分成多个小文件)

    一.split命令简介 split是Linux系统中的一个文件拆分命令,它可以将一个大文件拆分成多个小文件.这对于处理大型文件,或者需要将数据分解到多个文件中的场景非常有用. 二.split命令的使用 ...

  3. JS 判断对象属性是否存在,判断是否包含某个属性,是否为自身属性

    壹 ❀ 引 看过博主JS 疫情宅在家,学习不能停,七千字长文助你彻底弄懂原型与原型链这篇文章的同学应该知道,文中有专门介绍这个问题.那么为什么我要另起一篇再说一次呢?原因有两个,一是介绍原型与原型链的 ...

  4. SSD寻址单元IU对寿命的影响——古猫先生存储随笔转载

    SSD寻址单元IU对寿命的影响有多大? 原创 古猫先生 存储随笔 2024-01-30 08:30 发表于浙江 [转载]SSD寻址单元IU对寿命的影响有多大? (qq.com) 随着存储技术的不断进步 ...

  5. 前端学习 node 快速入门 系列 —— 项目版权格式化

    其他章节请看: 前端学习 node 快速入门 系列 项目版权格式化 需求 替换整个项目的版权信息,替换文件为 .c 和 .h 结尾. 分析 版权信息通常都在文件开头,通过是否有 copyright 来 ...

  6. STC8A8K64S4A12内部时钟的IRTRIM和LIRTRIM简单标定

    STC8A8K64S4A12因为没有固化的频率调节值, 要么在STC-ISP烧录时设置写入, 要么通过idata高地址读取, 这对于Linux下的SDCC用户就非常不方便, 既不能用STC-ISP, ...

  7. win32 - this 指针

    this指针是存在与类的成员函数中,指向被调用函数所在的类实例的地址. 根据以下程序来说明this指针, #include<iostream.h> class Point { int x, ...

  8. FFmpeg开发笔记(六):ffmpeg解码视频并使用SDL同步时间显示播放

    若该文为原创文章,未经允许不得转载原博主博客地址:https://blog.csdn.net/qq21497936原博主博客导航:https://blog.csdn.net/qq21497936/ar ...

  9. gunzip命令

    解压提取文件内容 语法格式:gunzip 参数 压缩包 常用参数 -a 使用ASCII文本模式 -q 静默执行模式 -c 将解压后的文件输出到标准输出设备 -r 递归处理所有子文件 -f 强制解压文件 ...

  10. 从源码看webpack3打包流程

    在javascript刚刚流行时,前端项目通常比较简单,不需要考虑项目的开发效率.性能和扩展性等. 随着前端项目越来越复杂,需要更正式的软件开发实践,比如单元测试(unit testing).代码检查 ...