All Projects → manheim → metalsmith-jquery

manheim / metalsmith-jquery

Licence: MIT license
A Metalsmith plugin to manipulate HTML via jQuery syntax

Programming Languages

javascript
184084 projects - #8 most used programming language

Projects that are alternatives of or similar to metalsmith-jquery

markdown
A metalsmith plugin to render markdown files to HTML.
Stars: ✭ 58 (+346.15%)
Mutual labels:  metalsmith
metalsmith-convert
Convert images with imagemagick (via imagemagick-native).
Stars: ✭ 17 (+30.77%)
Mutual labels:  metalsmith
directus-metalsmith-snipcart
Lookbook web app with Directus' open source headless CMS, Metalsmith, Vue.js & Snipcart
Stars: ✭ 14 (+7.69%)
Mutual labels:  metalsmith
metalsmith-paths
Metalsmith plugin that adds file path values to metadata
Stars: ✭ 19 (+46.15%)
Mutual labels:  metalsmith
metalsmith-request
Metalsmith plugin to grab content from the web and expose the results to metadata
Stars: ✭ 12 (-7.69%)
Mutual labels:  metalsmith
metalsmith-imagemin
Metalsmith plugin to minify images
Stars: ✭ 17 (+30.77%)
Mutual labels:  metalsmith
remove
A Metalsmith plugin to remove files from the build
Stars: ✭ 19 (+46.15%)
Mutual labels:  metalsmith
Staticman
💪 User-generated content for Git-powered websites
Stars: ✭ 2,098 (+16038.46%)
Mutual labels:  metalsmith
Gray Matter
Contributing Pull requests and stars are always welcome. For bugs and feature requests, please create an issue.
Stars: ✭ 2,105 (+16092.31%)
Mutual labels:  metalsmith
Metalsmith
An extremely simple, pluggable static site generator.
Stars: ✭ 7,692 (+59069.23%)
Mutual labels:  metalsmith
metalsmith-babel
A Metalsmith plugin to compile JavaScript with Babel
Stars: ✭ 19 (+46.15%)
Mutual labels:  metalsmith
metalsmith
An extremely simple, pluggable static site generator.
Stars: ✭ 7,721 (+59292.31%)
Mutual labels:  metalsmith
metalsmith-code-highlight
Metalsmith plugin for syntax highlighting code with HTML
Stars: ✭ 14 (+7.69%)
Mutual labels:  metalsmith
headings
A Metalsmith plugin that extracts headings from HTML files and attaches them to the file's metadata.
Stars: ✭ 22 (+69.23%)
Mutual labels:  metalsmith
metalsmith-html-minifier
A Metalsmith plug-in to minify HTML files
Stars: ✭ 23 (+76.92%)
Mutual labels:  metalsmith
permalinks
A Metalsmith plugin for permalinks.
Stars: ✭ 61 (+369.23%)
Mutual labels:  metalsmith
streetsupport-web
Helping people facing homelessness across the UK to find services in their area, and connecting people who want to help to where it is needed most.
Stars: ✭ 21 (+61.54%)
Mutual labels:  metalsmith

metalsmith-jquery

Build Status

A Metalsmith plugin to manipulate HTML via jQuery syntax.

Features

Leverages Cheerio to support a logical subset of jQuery syntax, allowing you to manipulate the HTML generated from metalsmith-markdown -- or any other plugin!

Installation

$ npm install metalsmith-jquery

Usage

When your markdown is converted to HTML, it doesn't contain any CSS information. Use this to add styles to your markdown-generated HTML:

var jquery = require('metalsmith-jquery');

Metalsmith(__dirname)
    .use(markdown())
    .use(jquery(function($) {
        $('h2').addClass('welcome');
    }))
    .use(templates('handlebars'))
    .build(function(err) {
        if (err) throw err;
    });

For example, if you're using a Bootstrap template, you may want your Markdown-rendered tables to contain the Bootstrap table CSS classes:

var jquery = require('metalsmith-jquery');

Metalsmith(__dirname)
    .use(markdown())
    .use(jquery(function($) {
        $('table').addClass('table table-bordered');
    }))
    .use(templates('handlebars'))
    .build(function(err) {
        if (err) throw err;
    });

If you don't want to process every file, you can include a pattern of files to process:

var jquery = require('metalsmith-jquery');

Metalsmith(__dirname)
    .use(markdown())
    .use(jquery('**/*.html', function($) {
        $('table').addClass('table table-bordered');
    }))
    .use(templates('handlebars'))
    .build(function(err) {
        if (err) throw err;
    });

If you want to add specific options to how Cherio should manipulate the generated HTML

var jquery = require('metalsmith-jquery');

Metalsmith(__dirname)
    .use(markdown())
    .use(jquery('**/*.html', function($, {decodeEntities: false}) {
        $('#content').append("<p>моя бабушка старая</p>"); // cyrillic characters wont be HTML-encoded
    }))
    .use(templates('handlebars'))
    .build(function(err) {
        if (err) throw err;
    });

Inside your callback, you can access the metalsmith-metadata, and metalsmith filename

    .use(jquery(function($, filename, files, metalsmith) {
        var title = $('h1').first().text();
        if (title)
            files[filename].title = title;
    }))

You can also store the javascript in a separate file, which is especially useful if you're managing your Metalsmith configuration in a JSON file:

{
    "plugins": {
        "metalsmith-markdown": {},
        "metalsmith-jquery": "fixit.js"
    }
}

... where "fixit.js" is a Javascript file in the node.js module format:

module.exports = function($) {

    $('h2').addClass('welcome');
    $('table').addClass('table table-bordered');

}

... and the path is relative to the current working directory.

See the tests for more examples.

Where do we use this? On our developer portal!

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].