message: Instruct to downgrade to Node 14 when contributor tries to compile contracts
diff: import { execSync } from 'child_process'
  import { copyFileSync, mkdirSync, readdirSync, renameSync, rmdirSync } from 'fs'
  import { resolve } from 'path'
  +import { SemVer } from 'semver'
  import { bold, brightItalic } from './_common'
  function main() {
  + panicOnNpm7()
  +
  const files = findFiles()
  removeOutDir(files)
  @@ -15,6 +18,22 @@ function main() {
  main()
  +function panicOnNpm7() {
  + const version = new SemVer(execSync('npm -v', { encoding: 'utf8' }).trim())
  + if (version.major > 6) {
  + console.error(
  + '\n' +
  + `We're sorry, but it seems you are using ${bold('NPM ' + version.format())}.\n` +
  + 'We need "npx" to fetch multiple versions of "solc".\n' +
  + 'NPM versions newer than 6 have the following issue:\n' +
  + brightItalic('https://github.com/npm/cli/issues/3210') +
  + bold('\n\nPlease use Node 14 to contribute to TypeChain.') +
  + `\nYou can use ${brightItalic('nvm')}, ${brightItalic('fnm')} or ${brightItalic('volta')} to do it.\n\n`,
  + )
  + process.exit(1)
  + }
  +}
  +
  function findFiles() {
  const rootDir = resolve(__dirname, '..')
  const contractsDir = resolve(rootDir, 'contracts')
  @@ -65,8 +84,6 @@ function generateABIs({ rootDir, contracts }: Files) {
  console.log(bold(`Compiling ${fileNames.length} contracts with \`npx solc@${semver}\``))
  - // BEWARE: Do not install solc to devDependencies until the following NPM 7
  - // issue is fixed: https://github.com/npm/cli/issues/3210
  execSync(`npx solc@${semver} --abi ${contractPaths} --bin -o ./contracts/compiled/${dirName}`, {
  cwd: rootDir,
  stdio: ['ignore', 'ignore', 'inherit'],
  