fetchNpmDeps: rename cacheVersion to fetcherVersion
To align with pnpm tooling.
This commit is contained in:
@@ -26,9 +26,9 @@ lib.extendMkDerivation {
|
||||
# The output hash of the dependencies for this project.
|
||||
# Can be calculated in advance with prefetch-npm-deps.
|
||||
npmDepsHash ? "",
|
||||
# Cache format version for npmDeps. Set to 2 to enable packument caching
|
||||
# Fetcher format version for npmDeps. Set to 2 to enable packument caching
|
||||
# for workspace support. Changing this will invalidate npmDepsHash.
|
||||
npmDepsCacheVersion ? 1,
|
||||
npmDepsFetcherVersion ? 1,
|
||||
# Whether to force the usage of Git dependencies that have install scripts, but not a lockfile.
|
||||
# Use with care.
|
||||
forceGitDeps ? false,
|
||||
@@ -69,7 +69,7 @@ lib.extendMkDerivation {
|
||||
;
|
||||
name = "${name}-npm-deps";
|
||||
hash = npmDepsHash;
|
||||
cacheVersion = npmDepsCacheVersion;
|
||||
fetcherVersion = npmDepsFetcherVersion;
|
||||
},
|
||||
# Custom npmConfigHook
|
||||
npmConfigHook ? null,
|
||||
@@ -90,7 +90,7 @@ lib.extendMkDerivation {
|
||||
inherit npmDeps npmBuildScript;
|
||||
|
||||
env = (args.env or { }) // {
|
||||
NIX_NPM_CACHE_VERSION = npmDepsCacheVersion;
|
||||
NIX_NPM_FETCHER_VERSION = npmDepsFetcherVersion;
|
||||
};
|
||||
|
||||
nativeBuildInputs =
|
||||
|
||||
@@ -28,19 +28,19 @@ npmConfigHook() {
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [[ -e "$npmDeps/cache_version" ]]; then
|
||||
local -r cacheVersion=$(cat "$npmDeps/cache_version")
|
||||
if [[ -e "$npmDeps/.fetcher-version" ]]; then
|
||||
local -r fetcherVersion=$(cat "$npmDeps/.fetcher-version")
|
||||
else
|
||||
local -r cacheVersion="1"
|
||||
local -r fetcherVersion="1"
|
||||
fi
|
||||
|
||||
# Only run this in buildNpmPackage, this is just for a nicer error message; we trust that
|
||||
# people using the setup hook directly also know how FODs work. ;)
|
||||
if [[ -n ${NIX_NPM_CACHE_VERSION+x} ]] && [[ $NIX_NPM_CACHE_VERSION != $cacheVersion ]]; then
|
||||
if [[ -n ${NIX_NPM_FETCHER_VERSION+x} ]] && [[ $NIX_NPM_FETCHER_VERSION != $fetcherVersion ]]; then
|
||||
echo
|
||||
echo "ERROR: npmDepsHash is out of date"
|
||||
echo
|
||||
echo "The cache version in the arguments to buildNpmPackage ($NIX_NPM_CACHE_VERSION) is not the same as the one in $npmDeps ($cacheVersion)."
|
||||
echo "The fetcher version in the arguments to buildNpmPackage ($NIX_NPM_FETCHER_VERSION) is not the same as the one in $npmDeps ($fetcherVersion)."
|
||||
echo
|
||||
echo "To fix the issue:"
|
||||
echo '1. Use `lib.fakeHash` as the npmDepsHash value'
|
||||
@@ -102,10 +102,10 @@ npmConfigHook() {
|
||||
local cachePath
|
||||
|
||||
# When a given cache key has multiple entries (which is the case with
|
||||
# cache version 2), npm always needs to write to the cache.
|
||||
# fetcher version 2), npm always needs to write to the cache.
|
||||
#
|
||||
# TODO(winter): report upstream?
|
||||
if [ -z "${makeCacheWritable-}" ] && (( cacheVersion == 1 )); then
|
||||
if [ -z "${makeCacheWritable-}" ] && (( fetcherVersion == 1 )); then
|
||||
cachePath="$npmDeps"
|
||||
else
|
||||
echo "Making cache writable"
|
||||
@@ -127,7 +127,7 @@ npmConfigHook() {
|
||||
echo "ERROR: npm failed to install dependencies"
|
||||
echo
|
||||
echo "Here are a few things you can try, depending on the error:"
|
||||
echo '1. Set `npmDepsCacheVersion = 2` (and update `npmDepsHash`)'
|
||||
echo '1. Set `npmDepsFetcherVersion = 2` (and update `npmDepsHash`)'
|
||||
echo '2. Set `makeCacheWritable = true`'
|
||||
echo " Note that this won't help if npm is complaining about not being able to write to the logs directory -- look above that for the actual error."
|
||||
echo '3. Set `npmFlags = [ "--legacy-peer-deps" ]`'
|
||||
|
||||
@@ -215,10 +215,10 @@
|
||||
# A string with a JSON attrset specifying registry mirrors, for example
|
||||
# {"registry.example.org": "my-mirror.local/registry.example.org"}
|
||||
npmRegistryOverridesString ? config.npmRegistryOverridesString,
|
||||
# Cache format version. Bump this to invalidate all existing hashes.
|
||||
# Fetcher format version. Bump this to invalidate all existing hashes.
|
||||
# Version 1: original format (tarballs only)
|
||||
# Version 2: includes packuments for workspace support
|
||||
cacheVersion ? 1,
|
||||
fetcherVersion ? 1,
|
||||
...
|
||||
}@args:
|
||||
let
|
||||
@@ -276,9 +276,9 @@
|
||||
|
||||
NIX_NPM_REGISTRY_OVERRIDES = npmRegistryOverridesString;
|
||||
|
||||
# Cache version controls which features are enabled in prefetch-npm-deps
|
||||
# Fetcher version controls which features are enabled in prefetch-npm-deps
|
||||
# Version 2+ enables packument fetching for workspace support
|
||||
NPM_CACHE_VERSION = toString cacheVersion;
|
||||
NPM_FETCHER_VERSION = toString fetcherVersion;
|
||||
|
||||
SSL_CERT_FILE =
|
||||
if
|
||||
|
||||
@@ -357,15 +357,15 @@ fn main() -> anyhow::Result<()> {
|
||||
Ok::<_, anyhow::Error>(())
|
||||
})?;
|
||||
|
||||
// Fetch and cache packuments (package metadata) - only for cache version 2+
|
||||
let cache_version: u32 = env::var("NPM_CACHE_VERSION")
|
||||
// Fetch and cache packuments (package metadata) - only for fetcher version 2+
|
||||
let fetcher_version: u32 = env::var("NPM_FETCHER_VERSION")
|
||||
.ok()
|
||||
.and_then(|v| v.parse().ok())
|
||||
.unwrap_or(1);
|
||||
|
||||
if cache_version >= 2 {
|
||||
if fetcher_version >= 2 {
|
||||
fetch_packuments(&cache, package_names)?;
|
||||
fs::write(out.join("cache_version"), format!("{cache_version}"))?;
|
||||
fs::write(out.join(".fetcher-version"), format!("{fetcher_version}"))?;
|
||||
}
|
||||
|
||||
fs::write(out.join("package-lock.json"), lock_content)?;
|
||||
|
||||
Reference in New Issue
Block a user