تفاوت tilda (~) و caret (^) داخل فایل package.json

اگر شما هم قبلا از npm (node package manager ) برای مدیریت پکیج‌های پروژه JavaScript خود استفاده کرده باشید، حتما با package.json آشنا شدید.

{
  "name": "some-project",
  "version": "0.1",
  "description": "Some demo project",
  "main": "server.js",
  "repository": {
    "type": "git",
    "url": "https://gitlab.com/company-name/repo/project.git"
  },
  "dependencies": {
    "express": "~4.11.x",
    "kerberos": "~0.0.x",
    "parse": "~1.8.0",
    "parse-dashboard": "^2.0.2",
    "parse-server": "*"
  },
  "scripts": {
  },
  "engines": {
    "node": ">=4.3"
  }
}

فرمت این فایل json و عنصر dependencies شامل پکیج‌های مورد نیاز پروژه است(کلید‌ها نشان دهنده نام پکیج و مقدار آن نشان دهنده شماره نسخه هدف نصب است).

با توجه به اینکه شماره نسخه‌های تعیین شده package.json از semver syntax پیروی میکند، شما میتوانید تعیین کنید هنگام بروزرسانی پکیج‌ها هر پکیج از کدام استراتژی استفاده کند.

major.minor.patch 
 1.0.2

با توجه به اینکه npm برای نصب نسخه مورد نظر پکیج از فایلpackage.json استفاده میکند هنگام بروزرسانی پکیج‌ها سه استراتژی برای هر پکیج میتوان تعریف کرد.

در نظر داشته باشید که npm از tilda (~) و caret (^) برای تعیین استراتژی‌ مورد نظر استفاده میکند.

  1. اگر شما در بین پکیج ها 1.0.2~ را ببینید به این معنی است که نسخه 1.0.2 یا آخرین شماره وصله (patch version number) مانند 1.0.4 را نصب کن.
  2. اگر شما در بین پکیج ها 1.0.2^ را ببینید به این معنی است که نسخه 1.0.2 یا آخرین بروزرسانی جزیی (minor) یا آخرین شماره وصله (patch version number) مانند 1.5.4 را نصب کن.
  3. هیچکدام از دو حالت بالا نباشد پس npm باید هنگام بروزرسانی از این پکیج صرف نظر کند.