Skip to content

lekhmanrus/esbuild-pug

Repository files navigation

esbuild-pug

esbuild-pug logo
esbuild plugin to work with pug (jade) files.

Build Publish codecov npm version npm


Features

  • Compiles .pug and .jade files
  • Supports various configuration file formats
  • Integrates with esbuild seamlessly

Installation

npm install --save-dev esbuild-pug

Usage

import { build } from 'esbuild';
import { pugPlugin } from 'esbuild-pug';

build({
  entryPoints: [ 'app.js' ],
  bundle: true,
  outfile: 'out.js',
  plugins: [ pugPlugin() ],
})
  .catch(() => process.exit(1));

Configuration

You can configure the plugin by passing options:

pugPlugin({
  basedir: './src/',
  // other pug options
})

Options

You can configure your project to pass the additional options.

The plugin accepts all standard Pug options, plus:

  • root: Set the root directory for resolving includes and extends.
  • loader: Choose between text (default) or js output.

You can see the supported options here.

Configuration File Formats

esbuild-pug supports configuration files in several formats:

  • JavaScript - use .pugrc.js or pug.config.js and export an object containing your configuration.
  • YAML - use .pugrc, .pugrc.yaml or .pugrc.yml to define the configuration structure.
  • JSON - use .pugrc.json to define the configuration structure.
  • package.json - create an pugConfig property in your package.json file and define your configuration there.

If there are multiple configuration files in the same directory, esbuild-pug will only use one. The priority order is as follows:

  1. package.json
  2. .pugrc
  3. .pugrc.json
  4. .pugrc.yaml
  5. .pugrc.yml
  6. .pugrc.js
  7. .pugrc.cjs
  8. pug.config.js
  9. pug.config.cjs

Using Configuration Files

Here's an example configuration file that sets Pug basedir option (again, see whole list of supported options here):

  • .pugrc.json (JSON)

    {
      "basedir": "./src/"
    }
  • .pugrc (YAML)

    basedir: ./src/
  • pug.config.js (JavaScript)

    module.exports = {
      basedir: './src/'
    };

P.S.: Either of that should work. No need to create all of them. See Configuration File Formats.

Build

Run npm run build to build the project. The build artifacts will be stored in the dist/ directory.

Contributing

Contributions are welcome! Please feel free to submit a Pull Request.