得益于nodejs社区的飞速发展,作为 node 自带的包管理工具的 npm 已经成为前端开发者的必备工具了。也许您对nodejs并没有多少了解,但您或多或少会用 npm install来安装一些包。由于支持全栈开发技术,npm应该是现在世界上最大规模的包管理系统。npm对使用者来说体验非常好,即使只会执行 install 也基本上不出出什么大岔子。很多用户因此不愿意阅读npm文档,今天就通过实验来扒一扒那些你可能不知道的 npm 原理、特性、技巧和最佳实践。
- Node.js和npm
Node.js是一个开源与跨平台的 JavaScript 运行时环境。 npm 是 Node.js 标准的软件包管理器。
npm 可以管理项目依赖的下载。如果项目具有 package.json 文件,则通过运行:
npm install
它会在当前目录的 node_modules 文件夹(如果尚不存在则会创建)中安装项目所需的所有东西。
当然,也可以手动安装指定包
npm install package-name
- npm install的安装位置
默认地,是把包安装到当前文件夹的node_modules
子文件夹下。可用-g来指定全局安装。全局安装位置可以通过npm root -g
来查询,在ubuntu里一般是/usr/local/lib/node_modules。
- package.json
package.json
文件是项目的清单。 它用于工具的配置中心,也是 npm
和 yarn
存储所有已安装软件包的名称和版本的地方。通常在项目文件夹中,可以用npm init来初始化一个package.json,然后在安装包时指定–save,以便将模块依赖写入dependencies 节点。这样运行 npm install 初始化项目时,会将模块下载到项目目录下。事实上,从npm 5开始,已经不需要刻意使用–save参数,默认的npm install不带–save是一样的效果。
- 项目实战
mkdir testnpm cd testnpm npm init --yes npm install test
上面的npm项目初始化,如果不用–yes,则可以交互式输入项目信息。
命令执行完后,我们可以删除node_modules,然后直接用package.json或package-lock.json的记录的项目信息重新安装一遍。
事实上,即使node_modules中已经有了相关的包,npm install安装项目所需的包或是再安装单独的包也不会有影响,因为它只会校验一下包是否是所需的依赖包。