ejs-plain-loader
EJS (Embeded JavaScript) loader for Webpack. It converts EJS templates to plain HTML using the EJS npm package.
Instalation
npm i -D ejs-plain-loader
EJS Example
<%= include('partials/head.ejs') %> <%= include('partials/navbar.ejs') %> <!-- ... --> <%= include('partials/footer.ejs') %>
Usage
NOTE: You need to chain the ejs-plain-loader with an html loader such as the html-loader and use a template plugin such as the html-webpack-plugin. To install these run npm i -D html-loader html-webpack-plugin
.
Inside your webpack config file
add the fallowing rules
const HtmlWebpackPlugin = ; moduleexports = // ... module: rules: test: /\.ejs$/i use: loader: 'html-loader' // loader for html files goes here options: attrs: ':src' ':data-src' 'source:srcset' 'source:data-srcset' // load(require) images, videos or other resources interpolate: true loader: 'ejs-plain-loader' plugins: // plugin for templates goes here template: './src/views/index.ejs' // ...
Importing partials
<!-- plain import --> <%- include('partials/my-awesome-partial.ejs') %> <!-- appending data --> <%- include('partials/card.ejs', { title: 'Lorem ipsum', content: 'Lorem ipsum dolor sit amet', actions: ['read more', 'add to favorites'] }) %>
Example:
index.ejs
<%- include('partials/header.ejs', { title: 'Webpack Starter App', author: 'John Doe', keywords: ['lorem', 'ipsum', 'dolor', 'sit', 'amet'], description: 'Lorem ipsum dolor sit, amet consectetur adipisicing elit.' }) %> <%- include('partials/navbar.ejs') %> <!-- MAIN CONTENT --> <%- include('partials/footer.ejs') %>
header.ejs
<% if (typeof description === 'undefined') description = 'placeholder'; if (typeof keywords === 'undefined') keywords = ['placeholder']; if (typeof author === 'undefined') author = 'placeholder'; if (typeof title === 'undefined') title = 'placeholder'; %> <%= title %>
Note: When you import a file using the import partials/navbar
syntax you have to use this syntax across all of the files you are including in navbar.ejs
.
Example:
index.ejs
... ... <%- include partials/navbar %> ...
navbar.ejs
... ... <%- include('partials/navbar.ejs') %> <!-- Throws an error --> <%- include partials/navbar %> <!-- Works fine --> ...
Importing JavaScript or JSON files
index.ejs
<%- const meta = require('../data/index-meta.js'); include('partials/header.ejs', meta); %><!-- ... -->
index-meta.js
moduleexports = title: 'Webpack Starter App' author: 'John Doe' keywords: 'lorem' 'ipsum' 'dolor' 'sit' 'amet' description: 'Lorem ipsum dolor sit, amet consectetur adipisicing elit.' { // ... }
Tags
See tags
Options
See EJS options
More info
For more info on how to use EJS visit their npm package page or their official website