npm 是什么?

本文写于 2020 年 6 月 16 日

最近帮几个同学装开发环境,发现他们会各种“卡死”在 npm 安装一些包的过程中。

他们会非常纠结这个命令我明明敲的和网上差不多,为什么错了呢?

其中一个锅,我觉得改甩给 CSDN,实在是有很多错误的解决方案被放在了网站上;另一个就是其实很多人都不会告诉新人 npm 到底是什么,只是单纯的甩给他们几条命令,任其自生自灭。

要谈 npm,那必然要先说说什么是程序员的社区。

社区

“自古以来”程序员就有着社区文化。社区即为一些拥有共同职业或者相同兴趣的人们自发的组织在一起,分享信息与资源,进行合作。

那程序员的社区干些什么呢?

  1. 分享源代码;
  2. 讨论代码问题;
  3. 分享学习资源和各种好玩的网站之类。

比如最大的程序员社区就是 GitHub。加入 GitHub 之后,你就可以使用社区中的别人的开源代码和项目了(注意开源协议),同时你也可以贡献你的代码,让全世界都能看见。

但是 GitHub 才几年,之前的程序员是怎么共享代码的呢?

稍微早一点,那真的很难去让所有人加入社区,可是稍微往后一点,大家都会通过网址去共享代码

比如你想使用 jQuery,就可以使用 <script src="xxxxx"> 来在自己的网站上引入 jQuery。有了 GitHub 之后,还可以通过 clone xxxx 将代码从 GitHub 下载到本地。

但是其实还是蛮麻烦的,因为下载下来不仅要去很多的网站进行下载,而且如果有个网站挂了呢?那整个网页都会收到影响呀。

于是 Isaac Z. Schlueter 就给出了一个解决方案:用一个工具集中这些代码。之后便创建了 npm。

所谓 npm,全称就是 Node Package Manager,node 包管理器

npm 的实现思路可以这么理解:

  1. 买个服务器做仓库;
  2. 让 jQuery、Bootstrap……等将代码提交到服务器上;
  3. 如果有人想用这些库,只需要把要用的库 npm install jQuery 到本地;
  4. 库的代码就会被下载到 node_modules 目录中。

这样子被使用的代码,就叫做“包”,你可以用他下载、删除很多包,所以叫做“包管理器”。

最后解释一下这几个命令:

npm install xxx

先安装 xxx,但是这样安装,只是下载了,并没有“登记”到你的项目,必须连同版本号手动将他们添加到模块配置文件 package.json 中的依赖里。

npm install xxx -S

优化上一个操作,它会自动帮你添加到 package.json 的依赖——比如 vue、react。

npm install xxx -D

跟上一个几乎一样,区别是,这个是将包添加到开发依赖——比如 prettier(格式化代码)、babel(编译代码)。

npm install -g xxxx

将 xxxx 包,全局安装到你的电脑上。

(完)

npm 是什么?的更多相关文章

  1. 网络原因导致 npm 软件包 node-sass / gulp-sass 安装失败的处理办法

    如果你正在构建一个基于 gulp 的前端自动化开发环境,那么极有可能会用到 gulp-sass ,由于网络原因你可能会安装失败,因为安装过程中部分细节会到亚马逊云服务器上获取文件.本文主要讨论在不变更 ...

  2. npm 私有模块的管理使用

    你可以使用 NPM 命令行工具来管理你在 NPM 仓库的私有模块代码,这使得在项目中使用公共模块变的更加方便. 开始前的工作 你需要一个 2.7.0 以上版本的 npm ,并且需要有一个可以登陆 np ...

  3. NPM (node package manager) 入门 - 基础使用

    什么是npm ? npm 是 nodejs 的包管理和分发工具.它可以让 javascript 开发者能够更加轻松的共享代码和共用代码片段,并且通过 npm 管理你分享的代码也很方便快捷和简单. 截至 ...

  4. Npm包的开发

    个人开发包的目录结构 ├── coverage //istanbul测试覆盖率生成的文件 ├── index.js //入口文件 ├── introduce.md //说明文件 ├── lib │   ...

  5. npm package.json属性详解

    概述 本文档是自己看官方文档的理解+翻译,内容是package.json配置里边的属性含义.package.json必须是一个严格的json文件,而不仅仅是js里边的一个对象.其中很多属性可以通过np ...

  6. npm 使用小结

    本文内容基于 npm 4.0.5 概述 npm (node package manager),即 node 包管理器.这里的 node 包就是指各种 javascript 库. npm 是随同 Nod ...

  7. Node.js npm 详解

    一.npm简介 安装npm请阅读我之前的文章Hello Node中npm安装那一部分,不过只介绍了linux平台,如果是其它平台,有前辈写了更加详细的介绍. npm的全称:Node Package M ...

  8. 升级npm

    查看npm的所有版本 运行命令: npm view npm versions 命令运行后,会输出到目前为止npm的所有版本. [ '1.1.25', '1.1.70', '1.1.71', '1.2. ...

  9. NPM如何更新到最新版

    参考文章--npm更新到最新版本的方法 其实我们可以这样,随便新建一个文件夹例如:F:\test.按着"shift"键,右键该文件夹,选择"在此处打开命令窗口(W)&qu ...

  10. npm源切换

    版权声明:欢迎转载,请附加转载来源:一路博客(http://www.16boke.com)   目录(?)[+] 安装 使用 列出可选的源 切换 增加源 删除源 测试速度 许可 项目主页   我们介绍 ...

随机推荐

  1. cache + redis(一)

    一.缓存的概念 1.Buffer,Cache的区别: buffer: 一般用于写操作,写缓冲. cache: 一般用于读操作,读缓存. 它们都是解决速度不一致的问题,都设计到IO操作. 2.Cache ...

  2. 学习saltstack (三)

    salt是一个新的基础平台管理工具,2011-02-20诞生,创造者Thoms SHatch,起名salt原因生活中常见.易记,使用saltstack.com原因这个域名没有被注册,Because s ...

  3. Netty学习摘记 —— ByteBuf详解

    本文参考 本篇文章是对<Netty In Action>一书第五章"ByteBuf"的学习摘记,主要内容为JDK 的ByteBuffer替代品ByteBuf的优越性 你 ...

  4. OpenCV+QT5在Window下的环境配置记录

    在安装OpenCV时最需要注意的是,OpenCV库,也就是我们需要的dll和动态库需要我们使用CMake来生成. 虽然在官网上下载得到的文件中已经包含了库文件和.h等头文件,但是在具体开发中编译器编译 ...

  5. nRF Connect SDK(NCS)/Zephyr固件升级详解 – 重点讲述MCUboot和蓝牙空中升级

    如何在nRF Connect SDK(NCS)中实现蓝牙空中升级?MCUboot和B0两个Bootloader有什么区别?MCUboot升级使用的image格式是怎么样的?什么是SMP协议?CBOR编 ...

  6. git提交错误 git config --global user.email “you@example.com“ git config --global user.name “Your Name

    1 Commit failed - exit code 128 received, with output: '*** Please tell me who you are. 2 3 Run 4 5 ...

  7. 安装Backstage.io应用

    Backstage介绍 What's Backstage? Backstage is an open platform for building developer portals. Powered ...

  8. 设备像素,CSS像素,设备独立像素

    1.概念 设备像素(device pixel)简写DP 设备像素又称 **物理像素** ,是设备能控制显示的最小单位,我们可以把它看做显示器上的一个点.我们常说的 1920x1080像素分辨率就是用的 ...

  9. 【uniapp 开发】手绘签名组件

    代码如下: <template> <view class="content"> <button type="primary" @t ...

  10. vscode代码格式化快捷键及保存时自动格式化

    一.实现vs code中代码格式化快捷键:[Shift]+[Alt]+ F 二.实现保存时自动代码格式化: 1)文件 ------.>[首选项]---------->[设置]: 2)搜索  ...