UNPKG

1.37 kBJavaScriptView Raw
1import fs from 'node:fs/promises'
2
3import debug from 'debug'
4
5const debugLog = debug('lint-staged:file')
6
7/**
8 * Read contents of a file to buffer
9 * @param {String} filename
10 * @param {Boolean} [ignoreENOENT=true] — Whether to throw if the file doesn't exist
11 * @returns {Promise<Buffer>}
12 */
13export const readFile = async (filename, ignoreENOENT = true) => {
14 debugLog('Reading file `%s`', filename)
15 try {
16 return await fs.readFile(filename)
17 } catch (error) {
18 if (ignoreENOENT && error.code === 'ENOENT') {
19 debugLog("File `%s` doesn't exist, ignoring...", filename)
20 return null // no-op file doesn't exist
21 } else {
22 throw error
23 }
24 }
25}
26
27/**
28 * Remove a file
29 * @param {String} filename
30 * @param {Boolean} [ignoreENOENT=true] — Whether to throw if the file doesn't exist
31 */
32export const unlink = async (filename, ignoreENOENT = true) => {
33 debugLog('Removing file `%s`', filename)
34 try {
35 await fs.unlink(filename)
36 } catch (error) {
37 if (ignoreENOENT && error.code === 'ENOENT') {
38 debugLog("File `%s` doesn't exist, ignoring...", filename)
39 } else {
40 throw error
41 }
42 }
43}
44
45/**
46 * Write buffer to file
47 * @param {String} filename
48 * @param {Buffer} buffer
49 */
50export const writeFile = async (filename, buffer) => {
51 debugLog('Writing file `%s`', filename)
52 await fs.writeFile(filename, buffer)
53}