При написании моих узловых модулей мне очень понравилось использовать 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 Реми Шарпа