npm是什么?

1,142 阅读3分钟

这是我参与8月更文挑战的第8天,活动详情查看:8月更文挑战

npm是什么?Node.js的包管理工具

包是什么?就是别人写好的Node.js模块

初始化

npm init生成package.json,使用npm包的前提是你的当前目录本身就是一个npm包

选择一个目录,执行npm init

npm init 

然后一直回车,最后当前目录下会生成一个package.json的文件

package.json说明这个目录表达的是一个npm包

{
  "name": "npm",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo "Error: no test specified" && exit 1"
  },
  "author": "",
  "license": "ISC"
}

只要这个目录是npm包,那就可以安装其他npm包

所以在nodejs项目开始前,都应声明成npm包,这样才能方便的去安装其他的npm包

安装其他的包

npm install

安装一个glob的包

npm install glob

首先可以看到package.json的多了一个dependencies对象,和生成了node_modules和里面很多东西

image-20210809222951417

image-20210809223157865

意思就是说当前项目依赖了glob这个npm包,package中的这个dependencies作用就是你上传到github仓库的时候可以删除掉node_modules这个文件,当你从github把不包含node_modules的项目拉下来的时候只需要在终端执行一次npm install即可,项目就会重新生成node_modules。

你可以试着在终端输入测试一下删除和重新生成模块

#删除依赖的模块
rm -rf node_modules 
#重新生成依赖模块
npm install

这样就可以大幅减少上传到github或者服务器的项目大小,上传东西是真的慢...

npm包可以安装多个,你还可以接着安装

npm install gulp
npm uninstall
npm uninstall gulp

这样node_modules中的依赖删除了,package.json中dependencies对应的字段也删除了

cnpm install

因为有一些包是国外的,可能下载比较慢,如果安装速度你觉得慢的话可以装一个cnpm,这个是淘宝的npm镜像源(相当于把人家的包放到自己国内的服务器了,因为国内就比较快)

npm install -g cnpm -registry=https://registry.npm.taobao.org

这里-g的意思是将包安装到全局,-registry=https://registry.npm.taobao.org指定从这个地址下载包,相当于你以后每次下载包都从这个网址下了,而不是国外的网址

这样你就可以用cnpm安装包了跟npm使用方法一样,而且会快很多。比如

cnpm install gulp

npm

很多东西的学习都是从文档上来的最干脆直接:

NPM文档

NPM关于包和模块的文档

几个大神

  • TJ Holowaychunk

    • 作品:npm包express,是node上做http经典的模块,利用中间件实现http服务器
  • Mafintosh

  • Dominictarr

    • npm event-stream 曾经有人在这个包里写入恶意代码,偷取他人的虚拟货币,为此npm重视这个问题,现在每次装包都会有校验,预防这样的事情发生
  • ...

这些大神做出了很多常用模块

NPM的出现繁荣了JS的社区,是一个伟大的技术。