UNPKG

hardhat

Version:

Hardhat is an extensible developer tool that helps smart contract developers increase productivity by reliably bringing together the tools they want.

40 lines (34 loc) 1.27 kB
import { getPackageJsonPath } from "../util/packageInfo"; import { getRealPathSync } from "../util/fs-utils"; /** * Returns true if Hardhat is installed locally or linked from its repository, * by looking for it using the node module resolution logic. * * If a config file is provided, we start looking for it from it. Otherwise, * we use the current working directory. */ export function isHardhatInstalledLocallyOrLinked(configPath?: string) { try { const resolvedPackageJson = require.resolve("hardhat/package.json", { paths: [configPath ?? process.cwd()], }); const thisPackageJson = getPackageJsonPath(); // We need to get the realpaths here, as hardhat may be linked and // running with `node --preserve-symlinks` return ( getRealPathSync(resolvedPackageJson) === getRealPathSync(thisPackageJson) ); } catch { return false; } } /** * Checks whether we're using Hardhat in development mode (that is, we're working _on_ Hardhat). */ export function isLocalDev(): boolean { // TODO: This may give a false positive under yarn PnP return isRunningHardhatCoreTests() || !__filename.includes("node_modules"); } export function isRunningHardhatCoreTests(): boolean { return __filename.endsWith(".ts"); }