Skip to content

Commit

Permalink
Support inlining assets
Browse files Browse the repository at this point in the history
  • Loading branch information
astronomersiva committed Dec 29, 2018
1 parent 401daf5 commit 15ce051
Show file tree
Hide file tree
Showing 4 changed files with 114 additions and 2 deletions.
11 changes: 10 additions & 1 deletion lib/lego.js
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,16 @@ module.exports = async function(args) {
process.env.NODE_ENV = 'production';

const site = new Site();
await runTask([...build, 'revisionAssets', ['optimiseImages', 'extractCritical', 'generateSiteMap']], site);
await runTask([
...build,
'revisionAssets',
[
'optimiseImages',
'extractCritical',
'inlineAssets',
'generateSiteMap'
]
], site);

site.logger.success(`Build created at ${chalk.cyan(BUILD)}.`);
}
Expand Down
43 changes: 43 additions & 0 deletions lib/tasks/inlineAssets.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
module.exports = async function(site) {
const glob = require('glob');
const fs = require('fs-extra');
const path = require('path');
const { inlineSource } = require('inline-source')

const { BUILD, STATIC } = require('../utils/constants');

try {
let siteOptions = site.getConfig().inlineSource;
if (!siteOptions) {
return;
}

let message = 'Inlining Assets';
site.logger.await(message);

let htmlFiles = glob.sync(`${BUILD}/**/*.html`);
htmlFiles = htmlFiles.filter(file => !file.startsWith(`${BUILD}/${STATIC}`));

let inlineSourceOptions = Object.assign({
rootpath: path.resolve(BUILD),
// ES6 code will cause build failures if this is set as true
compress: false,
fs
}, siteOptions);

let inlinePromises = [];
for (let file of htmlFiles) {
let html = inlineSource(file, inlineSourceOptions);
inlinePromises.push(html);
}

let inlinedHtmlContents = await Promise.all(inlinePromises);
for (let [index, inlinedHtml] of inlinedHtmlContents.entries()) {
fs.writeFileSync(htmlFiles[index], inlinedHtml);
}

site.logger.success(message);
} catch (error) {
throw error;
}
}
61 changes: 60 additions & 1 deletion package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,7 @@
"imagemin": "^6.0.0",
"imagemin-mozjpeg": "^8.0.0",
"imagemin-pngquant": "^6.0.0",
"inline-source": "^6.1.8",
"liquid-node": "^3.0.0",
"live-server": "^1.2.0",
"markdown-it": "^8.4.2",
Expand Down

0 comments on commit 15ce051

Please sign in to comment.