Skip to content

Commit 022d9a8

Browse files
Chore/fs (#1573)
Co-authored-by: Leah <[email protected]>
1 parent 95198f3 commit 022d9a8

File tree

10 files changed

+39
-54
lines changed

10 files changed

+39
-54
lines changed

.changeset/thick-kiwis-serve.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
'preact-cli': patch
3+
---
4+
5+
Uses native FS promise API rather than promisifying manually

packages/cli/lib/commands/create.js

Lines changed: 18 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,8 @@ const { promisify } = require('util');
33
const fetch = require('isomorphic-unfetch');
44
const glob = promisify(require('glob').glob);
55
const gittar = require('gittar');
6-
const fs = require('../fs');
6+
const { existsSync, mkdirSync } = require('fs');
7+
const { copyFile, mkdir, readFile, writeFile } = require('fs').promises;
78
const os = require('os');
89
const { green } = require('kleur');
910
const { resolve, join } = require('path');
@@ -148,7 +149,7 @@ async function updateTemplatesCache() {
148149

149150
try {
150151
const repos = await fetch(TEMPLATES_REPO_URL).then(r => r.json());
151-
await fs.writeFile(cacheFilePath, JSON.stringify(repos, null, 2), 'utf-8');
152+
await writeFile(cacheFilePath, JSON.stringify(repos, null, 2), 'utf-8');
152153
} catch (err) {
153154
error(`\nFailed to update template cache\n ${err}`);
154155
}
@@ -168,14 +169,14 @@ async function fetchTemplates() {
168169
info('Fetching official templates:\n');
169170

170171
// check if `.cache` folder exists or not, and create if does not exists
171-
if (!fs.existsSync(cacheFolder)) {
172-
await fs.mkdir(cacheFolder);
172+
if (!existsSync(cacheFolder)) {
173+
await mkdir(cacheFolder);
173174
}
174175

175176
// If cache file doesn't exist, then hit the API and fetch the data
176-
if (!fs.existsSync(cacheFilePath)) {
177+
if (!existsSync(cacheFilePath)) {
177178
const repos = await fetch(TEMPLATES_REPO_URL).then(r => r.json());
178-
await fs.writeFile(
179+
await writeFile(
179180
cacheFilePath,
180181
JSON.stringify(repos, null, 2),
181182
'utf-8'
@@ -186,7 +187,7 @@ async function fetchTemplates() {
186187
updateTemplatesCache();
187188

188189
// fetch the API response from cache file
189-
const templatesFromCache = await fs.readFile(cacheFilePath, 'utf-8');
190+
const templatesFromCache = await readFile(cacheFilePath, 'utf-8');
190191
const parsedTemplates = JSON.parse(templatesFromCache);
191192
const officialTemplates = normalizeTemplatesResponse(parsedTemplates || []);
192193

@@ -200,8 +201,8 @@ async function fetchTemplates() {
200201
}
201202

202203
async function copyFileToDestination(srcPath, destPath, force = false) {
203-
if (!fs.existsSync(destPath) || force) {
204-
await fs.copyFile(srcPath, destPath);
204+
if (!existsSync(destPath) || force) {
205+
await copyFile(srcPath, destPath);
205206
}
206207
}
207208

@@ -269,8 +270,8 @@ async function command(repo, dest, argv) {
269270
info(`Assuming you meant ${repo}...`);
270271
}
271272

272-
if (!fs.existsSync(resolve(cwd, dest, 'src'))) {
273-
fs.mkdirSync(resolve(cwd, dest, 'src'), { recursive: true });
273+
if (!existsSync(resolve(cwd, dest, 'src'))) {
274+
mkdirSync(resolve(cwd, dest, 'src'), { recursive: true });
274275
}
275276

276277
// Attempt to fetch the `template`
@@ -330,11 +331,11 @@ async function command(repo, dest, argv) {
330331
entry,
331332
enc = 'utf8';
332333
for (entry of keeps) {
333-
buf = await fs.readFile(entry, enc);
334+
buf = await readFile(entry, enc);
334335
dict.forEach((v, k) => {
335336
buf = buf.replace(k, v);
336337
});
337-
await fs.writeFile(entry, buf, enc);
338+
await writeFile(entry, buf, enc);
338339
}
339340
} else {
340341
return error(`No \`template\` directory found within ${repo}!`, 1);
@@ -347,7 +348,7 @@ async function command(repo, dest, argv) {
347348
pkgFile = resolve(target, 'package.json');
348349

349350
if (pkgFile) {
350-
pkgData = JSON.parse(await fs.readFile(pkgFile));
351+
pkgData = JSON.parse(await readFile(pkgFile));
351352
// Write default "scripts" if none found
352353
pkgData.scripts =
353354
pkgData.scripts || (await addScripts(pkgData, target, isYarn));
@@ -362,12 +363,12 @@ async function command(repo, dest, argv) {
362363
}
363364
// Find a `manifest.json`; use the first match, if any
364365
let files = await glob(target + '/**/manifest.json');
365-
let manifest = files[0] && JSON.parse(await fs.readFile(files[0]));
366+
let manifest = files[0] && JSON.parse(await readFile(files[0]));
366367
if (manifest) {
367368
spinner.text = 'Updating `name` within `manifest.json` file';
368369
manifest.name = manifest.short_name = argv.name;
369370
// Write changes to `manifest.json`
370-
await fs.writeFile(files[0], JSON.stringify(manifest, null, 2));
371+
await writeFile(files[0], JSON.stringify(manifest, null, 2));
371372
if (argv.name.length > 12) {
372373
// @see https://developer.chrome.com/extensions/manifest/name#short_name
373374
process.stdout.write('\n');
@@ -377,7 +378,7 @@ async function command(repo, dest, argv) {
377378

378379
if (pkgData) {
379380
// Assume changes were made ¯\_(ツ)_/¯
380-
await fs.writeFile(pkgFile, JSON.stringify(pkgData, null, 2));
381+
await writeFile(pkgFile, JSON.stringify(pkgData, null, 2));
381382
}
382383

383384
const sourceDirectory = join(resolve(cwd, dest), 'src');

packages/cli/lib/fs.js

Lines changed: 0 additions & 22 deletions
This file was deleted.

packages/cli/lib/lib/webpack/run-webpack.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ const webpack = require('webpack');
33
const getPort = require('get-port');
44
const { resolve } = require('path');
55
const clear = require('console-clear');
6-
const { writeFile } = require('../../fs');
6+
const { writeFile } = require('fs').promises;
77
const { bold, red, green, magenta } = require('kleur');
88
const DevServer = require('webpack-dev-server');
99
const clientConfig = require('./webpack-client-config');

packages/cli/lib/lib/webpack/transform-config.js

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
const { resolve } = require('path');
22
const webpack = require('webpack');
3-
const fs = require('../../fs');
3+
const { statSync } = require('fs');
4+
const { stat } = require('fs').promises;
45
const { error } = require('../../util');
56

67
const FILE = 'preact.config';
@@ -12,7 +13,7 @@ async function findConfig(env) {
1213
let config = `${FILE}.${EXTENSIONS[idx]}`;
1314
let path = resolve(env.cwd, config);
1415
try {
15-
await fs.stat(path);
16+
await stat(path);
1617
return { configFile: config, isDefault: true };
1718
} catch (e) {}
1819
}
@@ -99,7 +100,7 @@ module.exports = async function (env, webpackConfig, isServer = false) {
99100
let myConfig = resolve(env.cwd, env.config);
100101

101102
try {
102-
await fs.stat(myConfig);
103+
await stat(myConfig);
103104
} catch (e) {
104105
if (isDefault) return;
105106
throw new Error(
@@ -285,7 +286,7 @@ class WebpackConfigHelpers {
285286
setHtmlTemplate(config, template) {
286287
let isPath;
287288
try {
288-
fs.statSync(template);
289+
statSync(template);
289290
isPath = true;
290291
} catch (e) {}
291292

packages/cli/tests/build.test.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
const { join } = require('path');
2-
const { readFile } = require('../lib/fs');
2+
const { existsSync } = require('fs');
3+
const { readFile } = require('fs').promises;
34
const looksLike = require('html-looks-like');
45
const { create, build } = require('./lib/cli');
56
const { snapshot, hasKey, isWithin } = require('./lib/utils');
6-
const { existsSync } = require('fs');
77
const { subject } = require('./lib/output');
88
const images = require('./images/build');
99
const { promisify } = require('util');

packages/cli/tests/create.test.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
const fs = require('fs');
1+
const { readFileSync } = require('fs');
22
const { relative, resolve } = require('path');
33
const { create } = require('./lib/cli');
44
const { expand } = require('./lib/utils');
@@ -24,7 +24,7 @@ describe('preact create', () => {
2424
let dir = await create('netlify');
2525

2626
const templateFilePath = resolve(__dirname, dir, 'src', 'template.html');
27-
const template = fs.readFileSync(templateFilePath).toString('utf8');
27+
const template = readFileSync(templateFilePath).toString('utf8');
2828

2929
expect(template.includes('twitter:card')).toEqual(true);
3030
});
@@ -33,7 +33,7 @@ describe('preact create', () => {
3333
let dir = await create('simple');
3434

3535
const templateFilePath = resolve(__dirname, dir, 'src', 'template.html');
36-
const template = fs.readFileSync(templateFilePath).toString('utf8');
36+
const template = readFileSync(templateFilePath).toString('utf8');
3737

3838
expect(template.includes('apple-touch-icon')).toEqual(true);
3939
});

packages/cli/tests/lib/utils.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
/* eslint-disable no-console */
22
const { relative, resolve } = require('path');
3-
const { stat } = require('../../lib/fs');
3+
const { stat } = require('fs').promises;
44
const minimatch = require('minimatch');
55
const pRetry = require('p-retry');
66
const { promisify } = require('util');

packages/cli/tests/service-worker.test.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
const { join } = require('path');
2+
const { readFile, writeFile } = require('fs').promises;
23
const { create, build } = require('./lib/cli');
3-
const { readFile, writeFile } = require('../lib/fs');
44
const { sleep } = require('./lib/utils');
55
const { getServer } = require('./server');
66
const startChrome = require('./lib/chrome');

packages/cli/tests/watch.test.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
const fs = require('../lib/fs');
1+
const { readFile, writeFile } = require('fs').promises;
22
const { resolve } = require('path');
33
const startChrome = require('./lib/chrome');
44
const { create, watch } = require('./lib/cli');
@@ -22,9 +22,9 @@ describe('preact', () => {
2222
let page = await loadPage(chrome, 'http://127.0.0.1:8083/');
2323

2424
let header = resolve(app, './src/components/header/index.js');
25-
let original = await fs.readFile(header, 'utf8');
25+
let original = await readFile(header, 'utf8');
2626
let update = original.replace('<h1>Preact App</h1>', '<h1>Test App</h1>');
27-
await fs.writeFile(header, update);
27+
await writeFile(header, update);
2828

2929
await waitUntilExpression(
3030
page,

0 commit comments

Comments
 (0)