#!/usr/bin/env node /* Usage: * node fixup_yarn_lock.js yarn.lock */ const fs = require('fs') const readline = require('readline') const urlToName = require('../lib/urlToName') const yarnLockPath = process.argv[2] const readFile = readline.createInterface({ input: fs.createReadStream(yarnLockPath, { encoding: 'utf8' }), // Note: we use the crlfDelay option to recognize all instances of CR LF // ('\r\n') in input.txt as a single line break. crlfDelay: Infinity, terminal: false, // input and output should be treated like a TTY }) const result = [] readFile .on('line', line => { const arr = line.match(/^ {2}resolved "([^#]+)#([^"]+)"$/) if (arr !== null) { const [_, url, shaOrRev] = arr const fileName = urlToName(url) result.push(` resolved "${fileName}#${shaOrRev}"`) } else { result.push(line) } }) .on('close', () => { fs.writeFile(yarnLockPath, result.join('\n'), 'utf8', err => { if (err) { console.error( 'fixup_yarn_lock: fatal error when trying to write to yarn.lock', err, ) } }) })