NPM就是一个下载器,通过它可以下载到几乎所有你需要的代码资源。它的成功,包括如下几个方面:
- 海量资源:NPM背后有数以万计的开源免费模块。
- 高效利用:作为开发者,只需要敲几个简单的命令就可以将这些开源模块引入到自己的项目中来。虽然这些模块大部分都可以在github上找到,但当模块数量巨大的时候,一个个去github上下载还是非常困难的。再考虑到版本依赖问题,就更加复杂。但有了NPM,一个命令搞定。
- 鼓励共享:通过NPM提供的
npm adduser
,npm publish
两个简单的命令,就能把自己写的模块贡献到NPM社区。超低的发布成本无疑为NPM的发扬光大带来了无疑估量的贡献。
NPM管理的是Node模块。理解一个Node模块(my_module),最核心的是要理解下面三大部分:
- 模块本身的代码逻辑
- 模块本身的代码逻辑,自然是通过代码来体现的;
- 模块依赖的第三方组件
- 模块依赖的第三方组件,通过模块的package.json配置文件中dependences字段指定,模块的使用者在安装模块时会根据package.json文件自动下载这些组件(他们其实也是一个个的模块)
- 模块依赖的文档测试工具
- 模块依赖的文档测试工具也是通过package.json配置文件来指定,对应的字段是devDependencies,对于这一部分,模块的使用者有两种选择:不准备了解模块细节,没必要安装这些工具,此时使用者可以通过
npm install my_module --save
命令来安装模块;准备对模块进行一些定制,定制后还需要利用模块的测试工具进行系统的测试,此时使用者可以通过npm install my_module --save-dev
命令来安装模块,npm会自动将devDependencies指定的工具一起下载下来。
- 模块依赖的文档测试工具也是通过package.json配置文件来指定,对应的字段是devDependencies,对于这一部分,模块的使用者有两种选择:不准备了解模块细节,没必要安装这些工具,此时使用者可以通过
由此可见,模块 = 代码 + 依赖 = 代码 + package.json
。我们只需要通过npm把代码和package.json文件下载下来,就能获得使用这个模块所需的一切。