持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第21天,点击查看活动详情
在package.json 文件中,我们会发现有这两个属性:dependencies和 devDependencies。这篇文章我们就来看一下这两个属性的含义。
什么是dependencies / devDependencies
对于package.json 中的这两个属性,它们是以键值对的形式出现的。
其中key 为npm 库的名称;这些库的版本为value。
但是这个版本的书写方式是有一些语法的,如:
- ^ 表示安装最新的次版本。次版本的意思就是主版本的下一位,比如说:^1.1.1 代表的就是主版本1 系列的最新次版本,可能是1.2.3。
- 〜 表示安装最新的补丁程序版本。和^ 类似,举例来说,〜1.1.1 就会安装次版本系列1.1 的最新次版本1.1.23。
举例如下:
{
"dependencies": {
"eslint": "^6.8.0",
"js-yaml": "^3.13.1"
},
"devDependencies": {
"jest": "^25.1.0",
"jest-circus": "^25.1.0",
"prettier": "^1.19.1",
"ts-jest": "^25.2.1",
"typescript": "^3.8.3"
}
}
对于这些所有的确切的软件包版本的数据,都是记录在package-lock.json 文件中的。另外,我们来说说package-lock.json 文件。
package-lock.json 文件的作用
package-lock.json 文件描述了JavaScript 项目里面使用的依赖的软件包的确切的版本。我们可以观察到,package.json 和package-lock.json 文件名称之间相差一个单词lock。通过文件的名字,我们也可以明确,package.json 相当于一个“概括式”的描述的文件,而package-lock.json 文件是具体的表述文件。
对于package-lock.json 文件,它一般都是由npm install 命令去生成的,文件生成之后,它是可以被npm cli工具读取的,从而能确保构建环境的复制。
总结
这篇文章主要是讲述了package.json 文件中的dependencies 属性和devDependencies 属性,我们明确了这两个属性的作用,然后引出了package-lock.json 文件的作用。这样我们就更加清楚node 环境中的一些文件的意义了。