4578f6bd64
* Astro framework CLI support * Changeset: Added Astro automatic installation * Fixed the package name – was remix, now astro * Fixed the export of the example * Added IPv6 localhost to Astro hostnames * Updated Astro onboarding to show the CLI init command, instead of manual instructions * Astro quickstart * Fix for type in Remix quickstart * Next.js framework detection allows different config file extensions and “next” devDependency * Made the dev command port more general so it works with various frameworks
60 lines
1.5 KiB
TypeScript
60 lines
1.5 KiB
TypeScript
import fsModule, { writeFile } from "fs/promises";
|
|
import fsSync from "fs";
|
|
import pathModule from "path";
|
|
|
|
// Creates a file at the given path, if the directory doesn't exist it will be created
|
|
export async function createFile(path: string, contents: string): Promise<string> {
|
|
await fsModule.mkdir(pathModule.dirname(path), { recursive: true });
|
|
await fsModule.writeFile(path, contents);
|
|
|
|
return path;
|
|
}
|
|
|
|
export async function pathExists(path: string): Promise<boolean> {
|
|
try {
|
|
await fsModule.access(path);
|
|
|
|
return true;
|
|
} catch (err) {
|
|
return false;
|
|
}
|
|
}
|
|
|
|
export async function someFileExists(directory: string, filenames: string[]): Promise<boolean> {
|
|
for (let index = 0; index < filenames.length; index++) {
|
|
const filename = filenames[index];
|
|
if (!filename) continue;
|
|
|
|
const path = pathModule.join(directory, filename);
|
|
if (await pathExists(path)) {
|
|
return true;
|
|
}
|
|
}
|
|
|
|
return false;
|
|
}
|
|
|
|
export async function removeFile(path: string) {
|
|
await fsModule.unlink(path);
|
|
}
|
|
|
|
export async function readFile(path: string) {
|
|
return await fsModule.readFile(path, "utf8");
|
|
}
|
|
|
|
export async function readJSONFile(path: string) {
|
|
const fileContents = await fsModule.readFile(path, "utf8");
|
|
|
|
return JSON.parse(fileContents);
|
|
}
|
|
|
|
export async function writeJSONFile(path: string, json: any) {
|
|
await writeFile(path, JSON.stringify(json, null, 2));
|
|
}
|
|
|
|
export function readJSONFileSync(path: string) {
|
|
const fileContents = fsSync.readFileSync(path, "utf8");
|
|
|
|
return JSON.parse(fileContents);
|
|
}
|