Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
prefix: opts.lockfileDir,
})
} else {
logger.warn({
error: err,
message: `An error occurred while uploading ${depNode.packageId}`,
prefix: opts.lockfileDir,
})
}
}
}
} catch (err) {
if (depNode.optional) {
// TODO: add parents field to the log
const pkg = await readPackageFromDir(path.join(depNode.peripheralLocation)) as DependencyManifest
skippedOptionalDependencyLogger.debug({
details: err.toString(),
package: {
id: depNode.packageId,
name: pkg.name,
version: pkg.version,
},
prefix: opts.lockfileDir,
reason: 'build_failure',
})
return
}
throw err
}
}
defaultTag: ctx.defaultTag,
downloadPriority: -options.currentDepth,
importerDir: ctx.prefix,
lockfileDir: ctx.lockfileDir,
preferredVersions: options.preferredVersions,
registry: wantedDependency.alias && pickRegistryForPackage(ctx.registries, wantedDependency.alias) || ctx.registries.default,
sideEffectsCache: ctx.sideEffectsCache,
// Unfortunately, even when run with --lockfile-only, we need the *real* package.json
// so fetching of the tarball cannot be ever avoided. Related issue: https://github.com/pnpm/pnpm/issues/1176
skipFetch: false,
update,
workspacePackages: options.workspacePackages,
})
} catch (err) {
if (wantedDependency.optional) {
skippedOptionalDependencyLogger.debug({
details: err.toString(),
package: {
name: wantedDependency.alias,
pref: wantedDependency.pref,
version: wantedDependency.alias ? wantedDependency.pref : undefined,
},
parents: nodeIdToParents(createNodeId(options.parentNodeId, 'fake-id'), ctx.resolvedPackagesByPackageId),
prefix: ctx.prefix,
reason: 'resolution_failure',
})
return null
}
throw err
}
dependencyResolvedLogger.debug({
}
await runPostinstallHooks({
depPath,
extraBinPaths: ctx.extraBinPaths,
optional: pkgSnapshot.optional === true,
pkgRoot,
prepare: pkgSnapshot.prepare,
rawConfig: opts.rawConfig,
rootNodeModulesDir: ctx.rootModulesDir,
unsafePerm: opts.unsafePerm || false,
})
pkgsThatWereRebuilt.add(relDepPath)
} catch (err) {
if (pkgSnapshot.optional) {
// TODO: add parents field to the log
skippedOptionalDependencyLogger.debug({
details: err.toString(),
package: {
id: pkgSnapshot.id || depPath,
name: pkgInfo.name,
version: pkgInfo.version,
},
prefix: opts.dir,
reason: 'build_failure',
})
return
}
throw err
}
}
))
optional: boolean,
pnpmVersion: string,
lockfileDir: string,
},
): boolean | null {
const warn = checkPackage(pkgId, pkg, options)
if (!warn) return true
installCheckLogger.warn({
message: warn.message,
prefix: options.lockfileDir,
})
if (options.optional) {
skippedOptionalDependencyLogger.debug({
details: warn.toString(),
package: {
id: pkgId,
name: pkg.name,
version: pkg.version,
},
prefix: options.lockfileDir,
reason: warn.code === 'ERR_PNPM_UNSUPPORTED_ENGINE' ? 'unsupported_engine' : 'unsupported_platform',
})
return false
}
if (options.engineStrict) throw warn
return null
os: pkg.os,
}) ||
await installChecks.checkEngine({
_id: pkgId,
engines: pkg.engines,
}, {
nodeVersion: options.nodeVersion,
pnpmVersion: options.pnpmVersion,
})
if (!warn) return true
installCheckLogger.warn(warn)
if (options.optional) {
skippedOptionalDependencyLogger.debug({
details: warn.toString(),
package: {
id: pkgId,
name: pkg.name,
version: pkg.version,
},
parents: nodeIdToParents(options.nodeId, options.resolvedPackagesByPackageId),
prefix: options.prefix,
reason: warn.code === 'ENOTSUP' ? 'unsupported_engine' : 'unsupported_platform',
})
return false
}
if (options.engineStrict) throw warn