这是我参与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和里面很多东西
意思就是说当前项目依赖了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
很多东西的学习都是从文档上来的最干脆直接:
几个大神
-
TJ Holowaychunk
- 作品:npm包express,是node上做http经典的模块,利用中间件实现http服务器
-
Mafintosh
-
Dominictarr
- npm event-stream 曾经有人在这个包里写入恶意代码,偷取他人的虚拟货币,为此npm重视这个问题,现在每次装包都会有校验,预防这样的事情发生
-
...
这些大神做出了很多常用模块
NPM的出现繁荣了JS的社区,是一个伟大的技术。