Skip to main content

Adds support for using npm/yarn to build assets in Lektor

Project description

lektor-npm-support

Build Status Build status Code Coverage

lektor-npm-support makes it easy to use Parcel, webpack, browserify, or any other tool to build assets for Lektor projects.

Enabling the Plugin

To enable the plugin, run this command while inside your Lektor project directory:

lektor plugins add lektor-npm-support

Example: Creating a Parcel Project

Create a parcel/ folder and inside that folder create the following files:

configs/npm-support.ini

This file instructs the plugin how to generate the assets:

[parcel]
npm = yarn
watch_script = watch
build_script = build
  • The section name [parcel] is the name of the folder where the Parcel project is located.
  • npm is the package manager command used to build the project. This example will use Yarn.
  • watch_script is the npm script used in lektor server -f npm,
  • build_script is the npm script used in lektor build -f npm.

This plugin supports more than one such entry.

parcel/package.json

This is a standard package.json file. It should contain two entries in the scripts section. The build script is used during lektor build -f npm, and the watch script is used during lektor server -f npm.

{
  "name": "my-parcel-project",
  "version": "1.0.0",
  "scripts": {
    "watch": "NODE_ENV=development parcel --out-dir=../assets/static/gen --out-file=main.js --public-url=./assets/ main.js",
    "build": "NODE_ENV=production parcel build --out-dir=../assets/static/gen --out-file=main.js --public-url=./assets/ main.js"
  },
  "private": true
}

Now we can use yarn add to add Parcel, Babel and Sass:

$ cd </path/to/your/lektor/project>/parcel
$ yarn add parcel-bundler babel-preset-env node-sass

parcel/babelr.rc

Next up is a simple Babel config file, using the recommended env preset.

{
  "presets": ["env"]
}

parcel/main.scss

A simple SCSS file.

body {
  border: 10px solid red;
}

parcel/main.js

A simple Javascript file that imports the SCSS file so that Parcel will know to include it as well.

import './main.scss';

Running the Server

Now you're ready to go. When you run lektor server nothing wil happen, instead you need to now run it as lektor server -f npm which will enable the Parcel build. Parcel will automatically build your files into assets/static/gen and this is where Lektor will then pick up the files. This is done so that you can ship the generated assets to others that might not have these tools, which simplifies using a Lektor website that use this plugin.

Manual Builds

To manually trigger a build that also invokes webpack you can use lektor build -f npm.

Including The Files

Now you need to include the files in your template. This will do it:

<link rel="stylesheet" href="{{ '/static/gen/main.css'| asseturl }}">
<script type=text/javascript src="{{ '/static/gen/main.js'| asseturl }}" charset="utf-8"></script>

Complete Working Example

The examples folder of this repository contains working projects.

Credits

This plugin is based on the official lektor-webpack-support Lektor plugin by Armin Ronacher.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

lektor-npm-support-0.1.4.tar.gz (5.4 kB view details)

Uploaded Source

File details

Details for the file lektor-npm-support-0.1.4.tar.gz.

File metadata

File hashes

Hashes for lektor-npm-support-0.1.4.tar.gz
Algorithm Hash digest
SHA256 4f69753f8776fe0398e59e1876d84fd00be9d89f3e59c9903ec56ddaedd70dc5
MD5 9c6ab22fe46dcc7eca678ed3b66e65fd
BLAKE2b-256 120a6b8b2182a5673498f1076dd5103edc798d7048a09a9a1d5b5797c458ef2b

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page