Path: blob/main/build/azure-pipelines/common/computeNodeModulesCacheKey.ts
3520 views
/*---------------------------------------------------------------------------------------------1* Copyright (c) Microsoft Corporation. All rights reserved.2* Licensed under the MIT License. See License.txt in the project root for license information.3*--------------------------------------------------------------------------------------------*/45import fs from 'fs';6import path from 'path';7import crypto from 'crypto';8const { dirs } = require('../../npm/dirs');910const ROOT = path.join(__dirname, '../../../');1112const shasum = crypto.createHash('sha256');1314shasum.update(fs.readFileSync(path.join(ROOT, 'build/.cachesalt')));15shasum.update(fs.readFileSync(path.join(ROOT, '.npmrc')));16shasum.update(fs.readFileSync(path.join(ROOT, 'build', '.npmrc')));17shasum.update(fs.readFileSync(path.join(ROOT, 'remote', '.npmrc')));1819// Add `package.json` and `package-lock.json` files20for (const dir of dirs) {21const packageJsonPath = path.join(ROOT, dir, 'package.json');22const packageJson = JSON.parse(fs.readFileSync(packageJsonPath).toString());23const relevantPackageJsonSections = {24dependencies: packageJson.dependencies,25devDependencies: packageJson.devDependencies,26optionalDependencies: packageJson.optionalDependencies,27resolutions: packageJson.resolutions,28distro: packageJson.distro29};30shasum.update(JSON.stringify(relevantPackageJsonSections));3132const packageLockPath = path.join(ROOT, dir, 'package-lock.json');33shasum.update(fs.readFileSync(packageLockPath));34}3536// Add any other command line arguments37for (let i = 2; i < process.argv.length; i++) {38shasum.update(process.argv[i]);39}4041process.stdout.write(shasum.digest('hex'));424344