Hodnoty Package.json jsou dostupné ve skriptech npm/yarn

Narazil jsem na tento tweet od Jesse Telford. Sdílel, že můžete odkazovat na hodnoty definované ve vašem package.json uvnitř definic skriptů npm/yarn.

Podívejme se na příklad.

{
  "name": "my-package",
  "scripts": {
    "lint": "eslint ./src/*",
    "test": "jest ./src/*"
  }
}

To, co tam vidíte, je duplicitní definice ./src/* ve dvou různých skriptech. U dvou skriptů tato duplikace nemusí být velký problém, ale opakované hodnoty mohou být mnohem obtížnější objevit a změnit ve větších projektech.

Pracoval jsem na projektech, které definovaly velmi složité skripty, které bylo těžké číst a udržovat. V tomto scénáři se chcete vyhnout jakémukoli opakování.

npm a příze poskytují příjemnou funkci, jak tento problém obejít. Můžete odkazovat na všechny package.json hodnoty v scripts části vašeho package.json .

Například name vlastnost je k dispozici na npm_package_name abyste mohli znovu použít definované hodnoty. 🎉

{
  "name": "my-package",
  "config": {
    "src": "./src/*"
  },
  "scripts": {
    "lint": "eslint $npm_package_config_src",
    "test": "jest $npm_package_config_src"
  }
}

Michael Kühnel poukázal na to, že když spouštíte soubory Node.js pomocí skriptů npm/yarn, package.json hodnoty budou dostupné prostřednictvím process.env .

Pokud máte následující package.json ...

{
  "foo": "bar"
  "scripts": {
    "start": "node index.js"
  }
}

... můžete spustit npm start ve vašem terminálu. index.js soubor pak má přístup k package.json hodnoty přes process.env .

// index.js

console.log(process.env.npm_package_foo); // 'bar'

To jsou skvělé věci!