使用 npm 的語意化版本控制

語意化版本控制是一種常用於版本編號的慣例。 在 Node.js 的封包中,有一個很好的事情就是大家都同意使用語意化版本控制。 語意化版本控制的概念很簡單:所有版本都有三個數字:x.y.z。 第一位數字是主要版本 第二位數字是次要版本 第三位數字是修補版本 當你進行新版本發布時,你不能隨意將數字遞增,而是需要遵守一些規則: 如果你進行了不兼容的 API 更改,則將主要版本遞增 如果你以向後相容的方式新增功能,則將次要版本遞增 如果你進行了向後相容的錯誤修復,則將修補版本遞增 這種慣例在各種程式語言中都被採用,並且對每個 npm 封包都很重要,因為整個系統都取決於此。 為什麼如此重要呢? 因為 npm 在我們運行 npm update 時,可以在 package.json 檔案 中使用一些規則來選擇要更新的版本。 這些規則使用以下符號: ^ ~ > >= < <= = - || 讓我們逐一了解這些規則: ^:如果你在運行 npm update 時輸入 ^0.13.0,它可以更新到修補版本和次要版本:0.13.1、0.14.0,以此類推。 ~:如果你在運行 npm update 時輸入 ~0.13.0,它只能更新到修補版本:0.13.1 是可以的,但 0.14.0 不行。 >:接受高於指定版本的任何版本 >=:接受等於或高於指定版本的任何版本 <=:接受等於或低於指定版本的任何版本 <:接受低於指定版本的任何版本 =:接受精確的版本 -:接受一個版本範圍。例如:2.1.0 - 2.6.2 ||:組合多個版本集合。例如:< 2.1 || > 2.6 您可以將某些符號組合在一起,例如使用 1.0.0 || >=1.1.0 <1.2.0,以使用 1.0.0 或從 1....

简介:npm包管理器

快速指南到npm,这是Node.js成功的重要组成部分。截至2017年1月,npm注册表中已有超过35万个软件包,使它成为地球上最大的单一语言代码仓库,你可以确信几乎任何东西都可以找到一个软件包。 介绍npm 安装 如何使用npm 安装所有依赖项 安装单个软件包 更新软件包 版本控制 运行任务 介绍npm npm是Node.js的标准包管理器。 截至2017年1月,npm注册表中已有超过35万个软件包,使它成为地球上最大的单一语言代码仓库,你可以确信几乎任何东西都可以找到一个软件包。 它最初是用于下载和管理Node.js软件包的依赖项,但现在也被用于前端JavaScript。 npm有许多功能。 Yarn是npm的一个替代方案,请确保也了解一下它。 安装 安装Node.js时也会安装npm。请前往https://nodejs.org安装Node,如果你还没有在系统上安装过它。 如何使用npm npm管理项目的所有依赖项的下载。 安装所有依赖项 如果项目有一个packages.json文件,在命令行中运行以下命令即可安装项目所需的所有依赖项: npm install 它将在node_modules文件夹中安装所有依赖项,并在需要时创建该文件夹。 安装单个软件包 你也可以通过以下命令安装一个特定的软件包: npm install <package-name> 通常会在此命令中添加更多标志: --save 将软件包安装并添加到package.json文件的dependencies中(从 npm 5 开始,此为默认行为)。 --save-dev 将软件包安装并添加到package.json文件的devDependencies中。 两者的区别主要在于,devDependencies通常用于开发工具,比如测试库,而dependencies会在生产环境中与应用程序一起打包。 更新软件包 更新软件包也很容易,只需运行以下命令: npm update npm会检查所有软件包,找到满足版本控制条件的较新版本。 你也可以指定更新某个特定软件包: npm update <package-name> 版本控制 除了下载功能,npm还可以管理版本控制,你可以指定软件包的任何特定版本,或要求高于或低于所需版本。 许多时候,你会发现某个库只与另一个库的主要版本兼容。 或者,最新版本中的一个未修复的错误导致了问题。 指定库的显式版本还有助于使每个人都使用完全相同的软件包版本,直到更新package.json文件为止。 在所有这些情况下,版本控制都很有帮助,npm遵循语义版本控制(semver)标准。 运行任务 package.json文件支持一种格式,用于指定可以使用以下命令运行的命令行任务: npm run <task-name> 例如: { "scripts": { "start-dev": "node lib/server-development", "start": "node lib/server-production" }, } 很常见使用此功能来运行Webpack:...