123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139 |
- # cli-truncate [](https://travis-ci.org/sindresorhus/cli-truncate)
- > Truncate a string to a specific width in the terminal
- Gracefully handles [ANSI escapes](https://en.wikipedia.org/wiki/ANSI_escape_code#Colors_and_Styles). Like a string styled with [`chalk`](https://github.com/chalk/chalk). It also supports Unicode surrogate pairs and fullwidth characters.
- ## Install
- ```
- $ npm install cli-truncate
- ```
- ## Usage
- ```js
- const cliTruncate = require('cli-truncate');
- cliTruncate('unicorn', 4);
- //=> 'uni…'
- // Truncate at different positions
- cliTruncate('unicorn', 4, {position: 'start'});
- //=> '…orn'
- cliTruncate('unicorn', 4, {position: 'middle'});
- //=> 'un…n'
- cliTruncate('unicorns rainbow dragons', 6, {position: 'end'})
- //=> 'unico…'
- cliTruncate('\u001B[31municorn\u001B[39m', 4);
- //=> '\u001B[31muni\u001B[39m…'
- // Truncate Unicode surrogate pairs
- cliTruncate('uni\uD83C\uDE00corn', 5);
- //=> 'uni\uD83C\uDE00…'
- // Truncate fullwidth characters
- cliTruncate('안녕하세요', 3);
- //=> '안…'
- // Truncate the paragraph to the terminal width
- const paragraph = 'Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor. Aenean massa.';
- cliTruncate(paragraph, process.stdout.columns));
- //=> 'Lorem ipsum dolor sit amet, consectetuer adipiscing…'
- ```
- ## API
- ### cliTruncate(text, columns, options?)
- #### text
- Type: `string`
- Text to truncate.
- #### columns
- Type: `number`
- Columns to occupy in the terminal.
- #### options
- Type: `object`
- ##### position
- Type: `string`\
- Default: `'end'`\
- Values: `'start'` `'middle'` `'end'`
- Position to truncate the string.
- ##### space
- Type: `boolean`\
- Default: `false`
- Add a space between the text and the ellipsis.
- ```js
- cliTruncate('unicorns', 5, {space: false});
- //=> 'unic…'
- cliTruncate('unicorns', 5, {space: true});
- //=> 'uni …'
- cliTruncate('unicorns', 6, {position: 'start', space: true});
- //=> '… orns'
- cliTruncate('unicorns', 7, {position: 'middle', space: true});
- //=> 'uni … s'
- ```
- ##### preferTruncationOnSpace
- Type: `boolean`\
- Default: `false`
- Truncate the string from a whitespace if it is within 3 characters from the actual breaking point.
- ```js
- cliTruncate('unicorns rainbow dragons', 20, {position: 'start', preferTruncationOnSpace: true})
- //=> '…rainbow dragons'
- // without preferTruncationOnSpace
- cliTruncate('unicorns rainbow dragons', 20, {position: 'start'})
- //=> '…rns rainbow dragons'
- cliTruncate('unicorns rainbow dragons', 20, {position: 'middle', preferTruncationOnSpace: true})
- //=> 'unicorns…dragons'
- cliTruncate('unicorns rainbow dragons', 6, {position: 'end', preferTruncationOnSpace: true})
- //=> 'unico…'
- // preferTruncationOnSpace would have no effect if space isn't found within next 3 indexes
- cliTruncate('unicorns rainbow dragons', 6, {position: 'middle', preferTruncationOnSpace: true})
- //=> 'uni…ns'
- ```
- ## Related
- - [wrap-ansi](https://github.com/chalk/wrap-ansi) - Wordwrap a string with ANSI escape codes
- - [slice-ansi](https://github.com/chalk/slice-ansi) - Slice a string with ANSI escape codes
- ---
- <div align="center">
- <b>
- <a href="https://tidelift.com/subscription/pkg/npm-cli-truncate?utm_source=npm-cli-truncate&utm_medium=referral&utm_campaign=readme">Get professional support for this package with a Tidelift subscription</a>
- </b>
- <br>
- <sub>
- Tidelift helps make open source sustainable for maintainers while giving companies<br>assurances about security, maintenance, and licensing for their dependencies.
- </sub>
- </div>
|