3.0.1 • Published 6 years ago

prismjs-components-loader v3.0.1

Weekly downloads
8,596
License
MIT
Repository
github
Last release
6 years ago

prismjs-components-loader

NPM version

Exposes PrismJS components (language definitions) as functions taking a Prism instance as argument.

This package will be helpful if:

  • You want to control when components are injected in Prism (loaded). Loading all 120 existing components can take up to 2 seconds of JS execution time in a browser. With this package, you can defer the loading of the language definitions.
  • You do not want components to inject themselves in a global Prism instance, but in a particular Prism instance

Install

yarn add prismjs-components-loader

Usage

You can use the load function to dynamically load a component and its dependencies:

import Prism from 'prismjs';
import PrismLoader from 'prismjs-components-loader';
import allComponents from 'prismjs-components-loader/dist/all-components';

const prismLoader = new PrismLoader(allComponents);

// Inject components and their dependencies
prismLoader.load(Prism, 'jsx');
prismLoader.load(Prism, 'yaml');

// JSX and Yaml were injected
assert(Boolean(Prism.languages.jsx));
assert(Boolean(Prism.languages.yaml));

// ... use Prism normally

Alternatively, you can just require the individual components files. This is useful if you are using a bundler like browserify and you don't want every components to be bundled. The example below should only include the source for prism-jsx:

import Prism from 'prismjs';
import prismJsx from 'prismjs-components-loader/dist/components/prism-jsx';

// Inject JSX component manually
prismJsx(Prism);

// ... use Prism normally

API Reference

Constructor

PrismLoader(componentsIndex)

Create a new instance of a PrismLoader. You must provide it an index of component sources, which is an object { [componentId: string]: componentExport }. all-components is provided for you and contains all existing components. You can alternatively use common-components which contains the most common ones (subjectively). Or you can provide your own.

Instance methods

prismLoader.load(prism: Prism, componentId: string): void

Inject a component and its dependencies in the given Prism instance. Does not load already loaded components. Reload all existing components that have the new component as peer dependency.

3.0.1

6 years ago

3.0.0

6 years ago

2.0.0

7 years ago

1.0.3

7 years ago

1.0.2

7 years ago

1.0.1

7 years ago

1.0.0

7 years ago