当前位置: 首页 > 后端技术 > Node.js

npm与package.json的连接

时间:2023-04-03 12:27:04 Node.js

在nodejs编写的脚手架项目中,npm是不可或缺的包管理工具。使用npm初始化时,会生成一个package.json文件来管理和描述整个项目。下面是在新建的练习项目中的package.json文件中,初始化项目后,安装axios后上面的各个配置信息对应的含义如下(1)名称*项目名称(2)版本*当前版本号(3)description为描述信息(4)main:'index.js'表示项目入口(5)script用于配置脚本信息start/stop/test/restart,runinnpmrunstart可以省略(6)authorauthor(发布时使用)(7)license开源协议(发布时使用)(8)dependencies开发环境依赖和生产环境需要(9)devDependencies开发依赖的库,生产环境依赖不需要使用上面的项目。通过npminstallaxios将axios添加到项目中,所以在dependencies下添加了aixos。除了在安装时在node_modules中添加相应的依赖外,package-lock.json会指定axios的具体版本以及axios内部的依赖。可以看到在package-lock.json文件中,axios的版本是0.21.1,但是有一点很奇怪。显然我只安装了axios。为什么在package-lock.json的依赖项中有一个“follow-redirects”?我们找到node_modules中安装的包文件,发现确实有axios和follow-redirects,打开axios的package.json文件,可以看到axios的生产依赖中已经添加了“follow-redirects”,所以当安装axios,它会自动帮我们安装它所依赖的包,而devDependencies中的依赖包都没有安装,这也验证了devDependencies只会在开发中使用,生产中不会安装。当我们拿到一个新项目的时候,一般是没有node_modules这个文件夹的。我们需要自己通过npminstall安装所有的依赖,执行npminstall时具体有哪些操作?如图,当项目中有package.json文件,执行npminstall时,会先判断是否有package-lock.json文件。如果没有锁文件,它会根据package.json文件建立依赖关系,然后通过npm在各种工具的注册库中查找依赖,获取压缩包。这个时候会缓存压缩包,然后将压缩包添加到node_modules中。添加到node_modules后,会生成package-lock.json记录下载的版本和依赖。关系如果有package-lock.json文件,直接判断package.json需要的依赖和lock文件中的依赖是否一致,然后重新建立依赖关系。如果一致,就去缓存中找缓存文件。到注册表库下载压缩包。