npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

prism-cli

v0.5.3

Published

Syntax highlighting for command line using ANSI Escape codes

Downloads

266

Readme

Prims-cli

Prism-cli is small script for highlighting of source code files from command line

It use awesome PrismJS library by Lea Verou and support all languages that prism support, but not all tokens are supported, ANSI colors are handled by ansi-256-colors. If you want you can provide configuration file where you can use any colors you like and provide all the tokens that PrismJS support.

npm GitHub license

Preview

Terminal with JavaScript Code in color

Installation

npm install -g prism-cli

Usage

cat {FILENAME} | prism -l {LANGAUGE}

or

prism -l {LANGUAGE} -f {FILENAME}

if you want to use less you need to use -R option:

prism --color=256 -l {LANGUAGE} -f {FILENAME} | less -R

You need --color option because of detection of 256 colors don't work in less because it's not real terminal. If your terminal don't support 256 colors you can use --color without argument.

If for some reason you need ANSI formatting for each line, like when you have long multiline comments and you use tail or head to get only few lines you can use -n option to have ANSI formatting on each line:

prism -l {LANGUAGE} -f {FILENAME} -n | tail -n 10

If you need to get the html code instead of the terminal output you can pass the --html parameter

prism -l {LANGUAGE} -f {FILENAME} --html

Node.js module

You can also use it as node.js module and highlight the text in your app.

var highlight = require('prism-cli');

console.log(hightlight('function(x) { return x * x; }', 'javascript'));

There is also 3rd optional argument to hightlight function which is newline flag same as -n in command line.

3rd argument to main function is options that are optional, it can accept this options:

  • html - indicate if it should return default html code from prism.
  • newlines - if set to true it will wrap each line in ANSI formatting.
  • grammar - prism.js grammar that you can load yourself (or you can have custom grammar).
  • colors - object with mapping prism token => ANSI escape color

Config file

If you don't like default colors you can use ~/.prismrc file that should be node module with exported object, that have PrismJS tokens that map to ASNI escapes.

Example mapping for 256 color supported terminals:

module.exports = {
  'function': '\x1b[37m',
  'comment': '\x1b[38;5;241m',
  'keyword': '\x1b[38;5;31m',
  'string': '\x1b[38;5;28m',
  'punctuation': '',
  'operator': '',
  'number': '\x1b[38;5;166m',
};

List of all PrismJS tokens can be found in PrismJS source code in prism.css.

Contribution

If you use some language that lack of colors for prism token, you can create Pull Request. I will happly merge your changes.

If you create nice palette using configuration file, you can create an issue or PR, I will check it and merge if it looks good.

Contributors

License

Licensed under MIT license

Copyright (c) 2017 Jakub T. Jankiewicz