Skip to content

oneRepo API: file

File manipulation functions.

type Options = {
step: LogStep;
};

Defined in: modules/file/src/index.ts

Generic options for file functions

optional step: LogStep;

Avoid creating a new step in output for each function. Pass a Logger Step to pipe all logs and output to that instead.


type ReadJsonOptions = {
jsonc: boolean;
} & Options;

Defined in: modules/file/src/index.ts

optional jsonc: boolean;

Parse the file as JSONC (JSON with comments).


type ReadSafeOptions = {
sentinel: string;
step: LogStep;
};

Defined in: modules/file/src/index.ts

optional sentinel: string;

Unique string to use as a start and end sentinel for the contents

optional step: LogStep;

Avoid creating a new step in output for each function. Pass a Logger Step to pipe all logs and output to that instead.


type SigningStatus = 'valid' | 'invalid' | 'unsigned';

Defined in: modules/file/src/signing.ts


type WriteOptions = {
sign: boolean;
step: LogStep;
};

Defined in: modules/file/src/index.ts

optional sign: boolean;

Optionally sign the contents for future verification.

optional step: LogStep;

Avoid creating a new step in output for each function. Pass a Logger Step to pipe all logs and output to that instead.


type WriteSafeOptions = {
sentinel: string;
sign: boolean;
step: LogStep;
};

Defined in: modules/file/src/index.ts

optional sentinel: string;

Unique string to use as a start and end sentinel for the contents

optional sign: boolean;

Optionally sign the contents for future verification.

optional step: LogStep;

Avoid creating a new step in output for each function. Pass a Logger Step to pipe all logs and output to that instead.

function chmod(filename, mode, options?): Promise<void>;

Defined in: modules/file/src/index.ts

Change file permissions

await file.chmod('/foo', 'a+x');

Parameters:

ParameterType
filenamestring
modestring | number
options?Options

Returns: Promise<void>


function copy(input, output, options?): Promise<void>;

Defined in: modules/file/src/index.ts

Copy a file from one location to another.

If --dry-run or process.env.ONEREPO_DRY_RUN is true, no files will be modified.

await file.copy('/path/to/in/', '/path/to/out/');

Parameters:

ParameterType
inputstring
outputstring
options?Options

Returns: Promise<void>


function exists(filename, options?): Promise<boolean>;

Defined in: modules/file/src/index.ts

Step-wrapped fs.existsSync implementation.

await file.exists('/path/to/file.ts');

Parameters:

ParameterType
filenamestring
options?Options

Returns: Promise<boolean>


function isSigned(contents): boolean;

Defined in: modules/file/src/signing.ts

Checks whether a file is signed without verifying the signature.

Parameters:

ParameterType
contentsstring

Returns: boolean


function lstat(filename, options?): Promise<null | Stats>;

Defined in: modules/file/src/index.ts

Step-wrapped fs.lstat implementation. See the node.js fs.Stats documentation for more on how to use the return data.

Parameters:

ParameterType
filenamestring
options?Options

Returns: Promise<null | Stats>

If the filename does not exist, null will be returned instead of a Stats object.

const stat = await file.lstat('/path/to/file/');
if (stat.isDirectory()) {
/* ... */
}

function makeTempDir(prefix, options?): Promise<string>;

Defined in: modules/file/src/index.ts

Create a tmp directory in the os tmpdir.

const dir = await file.makeTempDir('tacos-');

Parameters:

ParameterType
prefixstring
options?Options

Returns: Promise<string>


function mkdirp(pathname, options?): Promise<void>;

Defined in: modules/file/src/index.ts

Recursively create a directory.

await file.mkdirp('/path/to/something');

Parameters:

ParameterType
pathnamestring
options?Options

Returns: Promise<void>


function read(filename, flag?, options?): Promise<string>;

Defined in: modules/file/src/index.ts

Read the contents of a file.

const contents = await file.read('/path/to/file/');

Parameters:

ParameterType
filenamestring
flag?OpenMode
options?Options

Returns: Promise<string>


function readJson<T>(filename, flag?, options?): Promise<T>;

Defined in: modules/file/src/index.ts

Read and parse a JSON files.

Compatible with jsonc by stripping comments before running JSON.parse(). Pass jsonc: true to the options to enable jsonc.

const contents = await file.readJson('/path/to/package.json');
const strippedJsonc = await file.readJson('/path/to/tsconfig.json', 'r', { jsonc: true });
Type Parameter
T extends Record<string, unknown>

Parameters:

ParameterType
filenamestring
flag?OpenMode
options?ReadJsonOptions

Returns: Promise<T>


function readSafe(filename, options?): Promise<[null | string, string]>;

Defined in: modules/file/src/index.ts

Read a sentinel-wrapped portion of a file that was previously written with writeSafe and return both the wrapped portion as well as the full contents of the file.

const [portion, fullContents] = await file.readSafe('/path/to/file/', { sentinel: 'tacos' });

Parameters:

ParameterType
filenamestring
options?ReadSafeOptions

Returns: Promise<[null | string, string]>


function remove(pathname, options?): Promise<void>;

Defined in: modules/file/src/index.ts

Remove files and folders at a given path. Equivalent to rm -rf {pathname}

await file.remove('/path/to/something');

Parameters:

ParameterType
pathnamestring
options?Options

Returns: Promise<void>


function signContents(filename, contents, options?): Promise<any>;

Defined in: modules/file/src/index.ts

Sign the contents for a given file without writing out. This function is typically useful for manually comparing signed file contents.

const filename = graph.root.resolve('README.md');
const currentContents = await file.read(filename);
const newContents = generateReadme();
if (currentContents !== (await signContents(filename, contents))) {
logger.error('Contents mismatch');
}

Parameters:

ParameterType
filenamestring
contentsstring
options?Options

Returns: Promise<any>


function verifySignature(contents): SigningStatus;

Defined in: modules/file/src/signing.ts

Verify the signature in a signed file.

Parameters:

ParameterType
contentsstring

Returns: SigningStatus


function write(filename, contents, options?): Promise<void>;

Defined in: modules/file/src/index.ts

Write to a file. This will attempt use Prettier to format the contents based on the filename given. If Prettier does not understand the file’s extension, no changes will be made.

If --dry-run or process.env.ONEREPO_DRY_RUN is true, no files will be modified.

await file.write('/path/to/out/', '# hello!');

Parameters:

ParameterType
filenamestring
contentsstring
options?WriteOptions

Returns: Promise<void>


function writeSafe(filename, contents, options?): Promise<void>;

Defined in: modules/file/src/index.ts

Safely write contents to a file, wrapped in a start and end sentinel. This allows writing to a file without overwriting the current content of the file – other than that which falls between the start and end sentinel.

Write to /path/to/out/ between a section denoted by the sentinel 'some-unique-string' while leaving the rest of the file intact.

await file.writeSafe('/path/to/out/', '# hello', { sentinel: 'some-unique-string' });

Write to a section of the file as signed content for verifying later.

await file.writeSafe('/path/to/out/', '# hello', { signed: true });

Parameters:

ParameterType
filenamestring
contentsstring
options?WriteSafeOptions

Returns: Promise<void>