https://github.com/torchlight-api/torchlight-jigsaw
A Jigsaw client for Torchlight - the syntax highlighting API.
https://github.com/torchlight-api/torchlight-jigsaw
code-highlighter jigsaw laravel markdown static-site-generator syntax-highlighter syntax-highlighting
Last synced: 22 days ago
JSON representation
A Jigsaw client for Torchlight - the syntax highlighting API.
- Host: GitHub
- URL: https://github.com/torchlight-api/torchlight-jigsaw
- Owner: torchlight-api
- Created: 2021-05-23T00:13:51.000Z (over 4 years ago)
- Default Branch: main
- Last Pushed: 2022-07-21T17:27:31.000Z (over 3 years ago)
- Last Synced: 2025-12-26T16:51:02.426Z (about 2 months ago)
- Topics: code-highlighter, jigsaw, laravel, markdown, static-site-generator, syntax-highlighter, syntax-highlighting
- Language: PHP
- Homepage: https://torchlight.dev
- Size: 48.8 KB
- Stars: 15
- Watchers: 1
- Forks: 4
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
Awesome Lists containing this project
README
# Torchlight Client for Jigsaw
[](https://github.com/torchlight-api/torchlight-jigsaw/actions/workflows/tests.yml) [](//packagist.org/packages/torchlight/torchlight-jigsaw) [](//packagist.org/packages/torchlight/torchlight-jigsaw) [](//packagist.org/packages/torchlight/torchlight-jigsaw)
A [Torchlight](https://torchlight.dev) syntax highlighting extension for the static site builder [Jigsaw](https://jigsaw.tighten.co/).
Torchlight is a VS Code-compatible syntax highlighter that requires no JavaScript, supports every language, every VS Code theme, line highlighting, git diffing, and more.
> 📚 The full docs can be found at [torchlight.dev/docs/clients/jigsaw](https://torchlight.dev/docs/clients/jigsaw).
## Installation
To install, require the package from composer:
```
composer require torchlight/torchlight-jigsaw
```
After the package is downloaded, add the following line to your `bootstrap.php`
```php
Torchlight\Jigsaw\TorchlightExtension::make($container, $events)->boot();
```
This will boot the extension so that it can register its bindings, events, and commands.
Now your `bootstrap.php` might look something like this:
```php
beforeBuild(function (Jigsaw $jigsaw) {
* // Your code here
* });
*/
$events->afterBuild(GenerateSitemap::class);
Torchlight\Jigsaw\TorchlightExtension::make($container, $events)->boot();
```
## Configuration
To configure your Torchlight integration, you can start by publishing the configuration file:
```
./vendor/bin/jigsaw torchlight:install
```
Once run, you should see a new file `torchlight.php` in the root of your project, with contents that look like this:
```php
return [
// Which theme you want to use. You can find all of the themes at
// https://torchlight.dev/themes, or you can provide your own.
'theme' => 'material-theme-palenight',
// Your API token from torchlight.dev.
'token' => '',
// If you want to register the blade directives, set this to true.
'blade_components' => true,
// The Host of the API.
'host' => 'https://api.torchlight.dev',
// If you want to specify the cache path, you can do so here. Note
// that you should *not* use the same path that Jigsaw uses,
// which is `cache` at the root level of your app.
'cache_path' => 'torchlight_cache',
];
```
### Theme
You can change the theme of all your code blocks by adjusting the `theme` key in your configuration.
### Token
This is your API token from [torchlight.dev](https://torchlight.dev). (Torchlight is completely free for personal and open source projects.)
### Blade Components
By default Torchlight works with both Markdown files as well as Blade files, using a [custom Laravel component](https://laravel.com/docs/master/blade#components). If you'd like to disable the registration of the component for whatever reason, you can turn this to false.
### Host
You can change the host where your API requests are sent. Not sure why you'd ever want to do that, but you can!
### Cache
Torchlight requires a separate cache path, distinct from the Jigsaw cache. Jigsaw cleans out its cache from time to time, whereas Torchlight depends on individual TTLs, courtesy of the Laravel cache driver.
> You may want to add your configured cache path (`/torchlight_cache/`) to your `.gitignore` file so the cache files aren't persisted to your git history.
## Usage
### Markdown
To use Torchlight in your Jigsaw markdown files, you don't need to do anything else beside using fenced code blocks like you have been.
~~~markdown
This is my great markdown file! I'm going to show some code now:
```php
echo "here is my code"
```
Wasn't that good code?
~~~
Torchlight will handle highlighting that block of code.
If you want to add additional classes or an ID, you can use the syntax that is supported by Jigsaw's [underlying markdown parser](https://github.com/michelf/php-markdown).
~~~markdown
This is my great markdown file! I'm going to show some code now:
```php {#some-html-id.mt-4.mb-8}
echo "here is my code"
```
Wasn't that good code?
~~~
The resulting `code` element will have an id of `some-html-id` and classes of `mt-4 mb-8`, along with any classes that Torchlight applies.
### Blade
If you want to use Torchlight in your `.blade.php` files, you can use the custom blade component `x-torchlight-code`.
```blade
echo "hello world";
```
You can add any classes or other attributes, and they will be preserved:
```blade
echo "hello world";
```