При написании моих узловых модулей мне очень понравилось использовать Jest для тестирования (я писал о том, как я использовал тап, и это очень похоже).
Иногда, однако, возможность выполнить модуль из командной строки и передать некоторые произвольные данные может быть довольно удобной, и я использовал следующую технику для растущего числа модулей, которые я написал.
Экспорт в CLI
Я написал модуль под названием bin-to-file
. Это старый модуль JS Bin, который принимает структуру bin и возвращает одну строку HTML, в которой все смешано.
В модуле есть тесты, но я хочу иметь возможность быстро протестировать вывод с помощью командной строки, например:
$ cat __test__/foo.json | node lib/index.js
‣ <html>…
В моей библиотеке lib / index.js (исходный код модуля), прямо там, где я экспортирую функцию, мой код включает следующие строки:
// if the module isn’t being required be another module // and there’s something being piped in, then — if (!module.parent && !process.stdin.isTTY) { const stdin = require(‘fs’).readFileSync(0); // 0 = STDIN console.log(module.exports(JSON.parse(stdin.toString()))); }
Вот и все. Теперь я могу использовать свой модуль в командной строке для произвольного тестирования.
Первоначально опубликовано в B: log Реми Шарпа