Prefers splitting at whitespace characters, but falls back to "hard wrapping", and obeys existing newlines.
const {split,width} = require('split-text-to-chunks')
const str = 'A lazy ๐ถ made a pile of ๐ฉ'
split(str, 8/*columns*/)
// -> [ 'A lazy ๐ถ', 'made a ', 'pile of ', '๐ฉ' ]
split('A lazy dog', 3)
// -> [ 'A ', 'laz', 'y ', 'dog' ]
split('A lazy\ndog', 10)
// -> [ 'A lazy', 'dog' ]
width(str)
// -> 25
width(str, 20/* max, stop counting */)
// -> 20
width('one\ntwo\nthree')
// -> 5
$ npm i -g split-text-to-chunks
$ printf "A lazy ๐ถ made a pile of ๐ฉ" | wordwrap --columns 8 # default: 80
A lazy ๐ถ
made a
pile of
๐ฉ
$ printf "A lazy ๐ถ\nmade a pile of ๐ฉ" | wordwrap --width
16