From 96c4d0906902e84d0918b6b1777f62996525f343 Mon Sep 17 00:00:00 2001 From: Will Binns-Smith Date: Fri, 6 Oct 2023 11:01:48 -0700 Subject: [PATCH 1/8] Use node:fs instead of fs-extra in .github/actions Test Plan: Stats for this PR? --- .github/actions/next-stats-action/package.json | 1 - .github/actions/next-stats-action/src/index.js | 2 +- .../next-stats-action/src/prepare/repo-setup.js | 8 ++++---- .../next-stats-action/src/run/collect-diffs.js | 17 ++++++++++------- .../next-stats-action/src/run/collect-stats.js | 4 ++-- .../next-stats-action/src/run/get-dir-size.js | 2 +- .../actions/next-stats-action/src/run/index.js | 13 ++++++++----- 7 files changed, 26 insertions(+), 21 deletions(-) diff --git a/.github/actions/next-stats-action/package.json b/.github/actions/next-stats-action/package.json index 738cf4ed4cd28..42d2917ce6194 100644 --- a/.github/actions/next-stats-action/package.json +++ b/.github/actions/next-stats-action/package.json @@ -4,7 +4,6 @@ "dependencies": { "async-sema": "^3.1.0", "execa": "2.0.3", - "fs-extra": "^8.1.0", "get-port": "^5.0.0", "glob": "^7.1.4", "gzip-size": "^5.1.1", diff --git a/.github/actions/next-stats-action/src/index.js b/.github/actions/next-stats-action/src/index.js index 402c7cfadfcbc..7dc28aa003cfd 100644 --- a/.github/actions/next-stats-action/src/index.js +++ b/.github/actions/next-stats-action/src/index.js @@ -1,5 +1,5 @@ const path = require('path') -const fs = require('fs-extra') +const fs = require('fs/promises') const exec = require('./util/exec') const logger = require('./util/logger') const runConfigs = require('./run') diff --git a/.github/actions/next-stats-action/src/prepare/repo-setup.js b/.github/actions/next-stats-action/src/prepare/repo-setup.js index 660a6f4a0b012..8ae64e9015c70 100644 --- a/.github/actions/next-stats-action/src/prepare/repo-setup.js +++ b/.github/actions/next-stats-action/src/prepare/repo-setup.js @@ -1,14 +1,14 @@ const path = require('path') -const fs = require('fs-extra') +const fs = require('fs/promises') +const { existsSync } = require('fs') const exec = require('../util/exec') -const { remove } = require('fs-extra') const logger = require('../util/logger') const execa = require('execa') module.exports = (actionInfo) => { return { async cloneRepo(repoPath = '', dest = '', branch = '', depth = '20') { - await remove(dest) + await fs.rm(dest, { recursive: true, force: true }) await exec( `git clone ${actionInfo.gitRoot}${repoPath} --single-branch --branch ${branch} --depth=${depth} ${dest}` ) @@ -72,7 +72,7 @@ module.exports = (actionInfo) => { const packedPkgPath = path.join(pkgPath, `${pkg}-packed.tgz`) const pkgDataPath = path.join(pkgPath, 'package.json') - if (!fs.existsSync(pkgDataPath)) { + if (!existsSync(pkgDataPath)) { require('console').log(`Skipping ${pkgDataPath}`) continue } diff --git a/.github/actions/next-stats-action/src/run/collect-diffs.js b/.github/actions/next-stats-action/src/run/collect-diffs.js index 3440d8066be46..bacaa6e1eb221 100644 --- a/.github/actions/next-stats-action/src/run/collect-diffs.js +++ b/.github/actions/next-stats-action/src/run/collect-diffs.js @@ -1,5 +1,6 @@ const path = require('path') -const fs = require('fs-extra') +const fs = require('fs/promises') +const { existsSync } = require('fs') const exec = require('../util/exec') const glob = require('../util/glob') const logger = require('../util/logger') @@ -12,15 +13,17 @@ module.exports = async function collectDiffs( if (initial) { logger('Setting up directory for diffing') // set-up diffing directory - await fs.remove(diffingDir) - await fs.mkdirp(diffingDir) + await fs.rm(diffingDir, { recursive: true, force: true }) + await fs.mkdir(diffingDir, { recursive: true }) await exec(`cd ${diffingDir} && git init`) } else { // remove any previous files in case they won't be overwritten const toRemove = await glob('!(.git)', { cwd: diffingDir, dot: true }) await Promise.all( - toRemove.map((file) => fs.remove(path.join(diffingDir, file))) + toRemove.map((file) => + fs.rm(path.join(diffingDir, file), { recursive: true, force: true }) + ) ) } const diffs = {} @@ -40,7 +43,7 @@ module.exports = async function collectDiffs( const absPath = path.join(statsAppDir, file) const diffDest = path.join(diffingDir, file) - await fs.copy(absPath, diffDest) + await fs.cp(absPath, diffDest, { force: true }) } if (curFiles.length > 0) { @@ -75,7 +78,7 @@ module.exports = async function collectDiffs( for (const line of renamedFiles) { const [, prev, cur] = line.split('\t') - await fs.move(path.join(diffingDir, cur), path.join(diffingDir, prev)) + await fs.rename(path.join(diffingDir, cur), path.join(diffingDir, prev)) diffs._renames.push({ prev, cur, @@ -91,7 +94,7 @@ module.exports = async function collectDiffs( for (const file of changedFiles) { const fileKey = path.basename(file) - const hasFile = await fs.exists(path.join(diffingDir, file)) + const hasFile = existsSync(path.join(diffingDir, file)) if (!hasFile) { diffs[fileKey] = 'deleted' diff --git a/.github/actions/next-stats-action/src/run/collect-stats.js b/.github/actions/next-stats-action/src/run/collect-stats.js index f1ef1eb98b1d6..8c54fca65e42e 100644 --- a/.github/actions/next-stats-action/src/run/collect-stats.js +++ b/.github/actions/next-stats-action/src/run/collect-stats.js @@ -1,5 +1,5 @@ const path = require('path') -const fs = require('fs-extra') +const fs = require('fs/promises') const getPort = require('get-port') const fetch = require('node-fetch') const glob = require('../util/glob') @@ -84,7 +84,7 @@ module.exports = async function collectStats( if (hasPagesToFetch) { const fetchedPagesDir = path.join(curDir, 'fetched-pages') - await fs.mkdirp(fetchedPagesDir) + await fs.mkdir(fetchedPagesDir, { recursive: true }) for (let url of runConfig.pagesToFetch) { url = url.replace('$PORT', port) diff --git a/.github/actions/next-stats-action/src/run/get-dir-size.js b/.github/actions/next-stats-action/src/run/get-dir-size.js index aa16e519382ef..c8e42d463111f 100644 --- a/.github/actions/next-stats-action/src/run/get-dir-size.js +++ b/.github/actions/next-stats-action/src/run/get-dir-size.js @@ -1,5 +1,5 @@ const path = require('path') -const fs = require('fs-extra') +const fs = require('fs/promises') // getDirSize recursively gets size of all files in a directory async function getDirSize(dir, ctx = { size: 0 }) { diff --git a/.github/actions/next-stats-action/src/run/index.js b/.github/actions/next-stats-action/src/run/index.js index afc647d399be5..66fea2ab2d2b1 100644 --- a/.github/actions/next-stats-action/src/run/index.js +++ b/.github/actions/next-stats-action/src/run/index.js @@ -1,5 +1,5 @@ const path = require('path') -const fs = require('fs-extra') +const fs = require('fs/promises') const glob = require('../util/glob') const exec = require('../util/exec') const logger = require('../util/logger') @@ -36,8 +36,8 @@ async function runConfigs( const curStatsAppPath = path.join(diffRepoDir, relativeStatsAppDir) // clean statsAppDir - await fs.remove(statsAppDir) - await fs.copy(curStatsAppPath, statsAppDir) + await fs.rm(statsAppDir, { recursive: true, force: true }) + await fs.cp(curStatsAppPath, statsAppDir, { recursive: true }) logger(`Copying ${curStatsAppPath} ${statsAppDir}`) @@ -70,7 +70,7 @@ async function runConfigs( ? result.replace(/(\.|-)[0-9a-f]{16}(\.|-)/g, '$1HASH$2') : rename.dest if (result === dest) continue - await fs.move( + await fs.rename( path.join(statsAppDir, result), path.join(statsAppDir, dest) ) @@ -172,7 +172,10 @@ async function runConfigs( } async function linkPkgs(pkgDir = '', pkgPaths) { - await fs.remove(path.join(pkgDir, 'node_modules')) + await fs.rm(path.join(pkgDir, 'node_modules'), { + recursive: true, + force: true, + }) const pkgJsonPath = path.join(pkgDir, 'package.json') const pkgData = require(pkgJsonPath) From 77cdb316c69bfb15f30528407921784d65651a11 Mon Sep 17 00:00:00 2001 From: Will Binns-Smith Date: Fri, 6 Oct 2023 11:04:12 -0700 Subject: [PATCH 2/8] fixup! Use node:fs instead of fs-extra in .github/actions --- .github/pnpm-lock.yaml | 27 --------------------------- 1 file changed, 27 deletions(-) diff --git a/.github/pnpm-lock.yaml b/.github/pnpm-lock.yaml index 1781d02be48af..76a07e96e5dba 100644 --- a/.github/pnpm-lock.yaml +++ b/.github/pnpm-lock.yaml @@ -33,9 +33,6 @@ importers: execa: specifier: 2.0.3 version: 2.0.3 - fs-extra: - specifier: ^8.1.0 - version: 8.1.0 get-port: specifier: ^5.0.0 version: 5.1.1 @@ -480,15 +477,6 @@ packages: mime-types: 2.1.35 dev: false - /fs-extra@8.1.0: - resolution: {integrity: sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==} - engines: {node: '>=6 <7 || >=8'} - dependencies: - graceful-fs: 4.2.11 - jsonfile: 4.0.0 - universalify: 0.1.2 - dev: false - /fs.realpath@1.0.0: resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} dev: false @@ -522,10 +510,6 @@ packages: path-is-absolute: 1.0.1 dev: false - /graceful-fs@4.2.11: - resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} - dev: false - /gray-matter@4.0.2: resolution: {integrity: sha512-7hB/+LxrOjq/dd8APlK0r24uL/67w7SkYnfwhNFwg/VDIGWGmduTDYf3WNstLW2fbbmRwrDGCVSJ2isuf2+4Hw==} engines: {node: '>=6.0'} @@ -693,12 +677,6 @@ packages: esprima: 4.0.1 dev: false - /jsonfile@4.0.0: - resolution: {integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==} - optionalDependencies: - graceful-fs: 4.2.11 - dev: false - /kind-of@6.0.3: resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} engines: {node: '>=0.10.0'} @@ -1135,11 +1113,6 @@ packages: resolution: {integrity: sha512-isyNax3wXoKaulPDZWHQqbmIx1k2tb9fb3GGDBRxCscfYV2Ch7WxPArBsFEG8s/safwXTT7H4QGhaIkTp9447w==} dev: false - /universalify@0.1.2: - resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==} - engines: {node: '>= 4.0.0'} - dev: false - /uuid@8.3.2: resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==} hasBin: true From 25b0dfa57426d6ea52ba60e09318452a9bcb0386 Mon Sep 17 00:00:00 2001 From: Will Binns-Smith Date: Fri, 6 Oct 2023 11:15:54 -0700 Subject: [PATCH 3/8] fixup! Use node:fs instead of fs-extra in .github/actions --- .github/actions/next-stats-action/src/index.js | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/.github/actions/next-stats-action/src/index.js b/.github/actions/next-stats-action/src/index.js index 7dc28aa003cfd..fa067a6029eec 100644 --- a/.github/actions/next-stats-action/src/index.js +++ b/.github/actions/next-stats-action/src/index.js @@ -1,5 +1,6 @@ const path = require('path') const fs = require('fs/promises') +const { existsSync } = require('fs') const exec = require('./util/exec') const logger = require('./util/logger') const runConfigs = require('./run') @@ -21,7 +22,7 @@ if (!allowedActions.has(actionInfo.actionName) && !actionInfo.isRelease) { ;(async () => { try { - if (await fs.pathExists(path.join(__dirname, '../SKIP_NEXT_STATS.txt'))) { + if (existsSync(path.join(__dirname, '../SKIP_NEXT_STATS.txt'))) { console.log( 'SKIP_NEXT_STATS.txt file present, exiting stats generation..' ) @@ -100,7 +101,7 @@ if (!allowedActions.has(actionInfo.actionName) && !actionInfo.isRelease) { for (const dir of repoDirs) { logger(`Running initial build for ${dir}`) if (!actionInfo.skipClone) { - const usePnpm = await fs.pathExists(path.join(dir, 'pnpm-lock.yaml')) + const usePnpm = existsSync(path.join(dir, 'pnpm-lock.yaml')) if (!statsConfig.skipInitialInstall) { await exec.spawnPromise( From a74d75915e7f80ac096c8703b4beae63d0a597f8 Mon Sep 17 00:00:00 2001 From: Will Binns-Smith Date: Fri, 6 Oct 2023 11:25:25 -0700 Subject: [PATCH 4/8] fixup! Use node:fs instead of fs-extra in .github/actions --- .github/actions/next-stats-action/src/index.js | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/.github/actions/next-stats-action/src/index.js b/.github/actions/next-stats-action/src/index.js index fa067a6029eec..95a62fb448119 100644 --- a/.github/actions/next-stats-action/src/index.js +++ b/.github/actions/next-stats-action/src/index.js @@ -122,9 +122,10 @@ if (!allowedActions.has(actionInfo.actionName) && !actionInfo.isRelease) { } await fs - .copy( + .cp( path.join(__dirname, '../native'), - path.join(dir, 'packages/next-swc/native') + path.join(dir, 'packages/next-swc/native'), + { recursive: true, force: true } ) .catch(console.error) From bc0dcb6ac402fbe170f41c447e2e11931cbeb730 Mon Sep 17 00:00:00 2001 From: Will Binns-Smith Date: Fri, 6 Oct 2023 11:38:45 -0700 Subject: [PATCH 5/8] fixup! Use node:fs instead of fs-extra in .github/actions --- .github/actions/next-stats-action/src/run/collect-diffs.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/actions/next-stats-action/src/run/collect-diffs.js b/.github/actions/next-stats-action/src/run/collect-diffs.js index bacaa6e1eb221..80dd9a26ce24b 100644 --- a/.github/actions/next-stats-action/src/run/collect-diffs.js +++ b/.github/actions/next-stats-action/src/run/collect-diffs.js @@ -43,7 +43,7 @@ module.exports = async function collectDiffs( const absPath = path.join(statsAppDir, file) const diffDest = path.join(diffingDir, file) - await fs.cp(absPath, diffDest, { force: true }) + await fs.cp(absPath, diffDest, { recursive: true, force: true }) } if (curFiles.length > 0) { From acca2ad09aa8cf91c1cea626175bd237b4592b4f Mon Sep 17 00:00:00 2001 From: Will Binns-Smith Date: Tue, 10 Oct 2023 15:43:31 -0700 Subject: [PATCH 6/8] fixup! Merge remote-tracking branch 'origin/canary' into wbinnssmith/fs-extra-actions --- .github/actions/next-stats-action/src/prepare/repo-setup.js | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/actions/next-stats-action/src/prepare/repo-setup.js b/.github/actions/next-stats-action/src/prepare/repo-setup.js index 80ce9dc546cbd..598126bf8d32f 100644 --- a/.github/actions/next-stats-action/src/prepare/repo-setup.js +++ b/.github/actions/next-stats-action/src/prepare/repo-setup.js @@ -1,6 +1,5 @@ const path = require('path') const fs = require('fs/promises') -const { existsSync } = require('fs') const exec = require('../util/exec') const logger = require('../util/logger') const execa = require('execa') From 3039cefead7f509f8ef78adc0ab0eb45e0fe6881 Mon Sep 17 00:00:00 2001 From: Will Binns-Smith Date: Tue, 10 Oct 2023 15:43:53 -0700 Subject: [PATCH 7/8] fixup! Merge remote-tracking branch 'origin/canary' into wbinnssmith/fs-extra-actions --- .github/actions/next-stats-action/src/prepare/repo-setup.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/actions/next-stats-action/src/prepare/repo-setup.js b/.github/actions/next-stats-action/src/prepare/repo-setup.js index 598126bf8d32f..4442d15b54510 100644 --- a/.github/actions/next-stats-action/src/prepare/repo-setup.js +++ b/.github/actions/next-stats-action/src/prepare/repo-setup.js @@ -1,5 +1,6 @@ const path = require('path') const fs = require('fs/promises') +const { existsSync } = require('fs') const exec = require('../util/exec') const logger = require('../util/logger') const execa = require('execa') @@ -84,7 +85,7 @@ module.exports = (actionInfo) => { const packedPkgPath = path.join(pkgPath, `${pkg}-packed.tgz`) const pkgDataPath = path.join(pkgPath, 'package.json') - if (fs.existsSync(pkgDataPath)) { + if (existsSync(pkgDataPath)) { const pkgData = JSON.parse(await fs.readFile(pkgDataPath)) const { name } = pkgData From cf9d043c99452a3025b02554a49e40dfc6283792 Mon Sep 17 00:00:00 2001 From: Will Binns-Smith Date: Tue, 10 Oct 2023 15:47:24 -0700 Subject: [PATCH 8/8] fixup! Merge remote-tracking branch 'origin/canary' into wbinnssmith/fs-extra-actions --- .../next-stats-action/src/prepare/repo-setup.js | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/.github/actions/next-stats-action/src/prepare/repo-setup.js b/.github/actions/next-stats-action/src/prepare/repo-setup.js index 4442d15b54510..df62cc5723405 100644 --- a/.github/actions/next-stats-action/src/prepare/repo-setup.js +++ b/.github/actions/next-stats-action/src/prepare/repo-setup.js @@ -70,7 +70,7 @@ module.exports = (actionInfo) => { let pkgs try { - pkgs = await fsp.readdir(path.join(repoDir, 'packages')) + pkgs = await fs.readdir(path.join(repoDir, 'packages')) } catch (err) { if (err.code === 'ENOENT') { require('console').log('no packages to link') @@ -120,7 +120,7 @@ module.exports = (actionInfo) => { pkgData.files.push('native') try { - const swcBinariesDirContents = await fsp.readdir( + const swcBinariesDirContents = await fs.readdir( path.join(pkgPath, 'native') ) require('console').log( @@ -153,7 +153,7 @@ module.exports = (actionInfo) => { } } - await fsp.writeFile( + await fs.writeFile( pkgDataPath, JSON.stringify(pkgData, null, 2), 'utf8' @@ -184,9 +184,9 @@ module.exports = (actionInfo) => { 'disabled-native-gitignore' ) - await fsp.rename(nativeGitignorePath, renamedGitignorePath) + await fs.rename(nativeGitignorePath, renamedGitignorePath) cleanup = async () => { - await fsp.rename(renamedGitignorePath, nativeGitignorePath) + await fs.rename(renamedGitignorePath, nativeGitignorePath) } } @@ -199,7 +199,7 @@ module.exports = (actionInfo) => { }) return Promise.all([ - fsp.rename(path.resolve(pkgPath, stdout.trim()), packedPkgPath), + fs.rename(path.resolve(pkgPath, stdout.trim()), packedPkgPath), cleanup?.(), ]) }