Запускать как-то так:
$ gjs "/islands'" -l --nocolor | xargs ./fix-imports.js
| #!/usr/bin/env node | |
| /* eslint no-console: 0 */ | |
| const fs = require('fs'); | |
| for (let i = 2; i < process.argv.length; i++) { | |
| const filename = process.argv[i]; | |
| if (filename === process.argv[1]) { | |
| continue; | |
| } | |
| fixFilename(filename); | |
| } | |
| function fixFilename(filename) { | |
| let content = fs.readFileSync(filename, 'utf-8'); | |
| content = content.replace(/^const\s*{\s*(.*?)\s*}\s*=\s*require\('auto-core\/react\/components\/islands'\);$/gm, function(_, components) { | |
| if (components.indexOf(':') !== -1) { | |
| console.error(`Skipping ${ filename }`); | |
| return _; | |
| } | |
| return components.split(/\s*,\s*/g) | |
| .map(function(name) { | |
| name = name.trim(); | |
| if (!name) { | |
| return null; | |
| } | |
| return `const ${ name } = require('auto-core/react/components/islands/${ name }');`; | |
| }) | |
| .filter(Boolean) | |
| .join('\n'); | |
| }); | |
| fs.writeFileSync(filename, content, 'utf-8'); | |
| } |
gjs— это у меня вот такое. Наверное,findтоже сработает