72 lines
1.5 KiB
JavaScript
72 lines
1.5 KiB
JavaScript
const bs = require('browser-sync').create('Metalsmith')
|
|
const config = require('./config.js')
|
|
const debug = require('debug')('Run')
|
|
const metalsmith = require('./metalsmith')
|
|
const path = require('path')
|
|
const strip = require('strip-ansi')
|
|
|
|
function build (sync) {
|
|
debug('Building Metalsmith')
|
|
metalsmith.build((err) => {
|
|
if (err) {
|
|
debug('Metalsmith build error:')
|
|
debug(err)
|
|
if (sync) {
|
|
return bs.sockets.emit('fullscreen:message', {
|
|
title: 'Metalsmith Error:',
|
|
body: strip(`${err.message}\n\n${err.stack}`),
|
|
timeout: 100000
|
|
})
|
|
} else {
|
|
throw err
|
|
}
|
|
}
|
|
debug('Metalsmith build finished!')
|
|
if (sync) {
|
|
bs.reload()
|
|
}
|
|
})
|
|
}
|
|
|
|
function serve () {
|
|
bs.init({
|
|
server: config.paths.serverRoot,
|
|
port: 8080,
|
|
ui: {
|
|
port: 9000
|
|
},
|
|
open: false,
|
|
logLevel: 'debug',
|
|
logPrefix: 'BrowserSync',
|
|
logConnections: true,
|
|
logFileChanges: true,
|
|
notify: true,
|
|
files: [{
|
|
match: [
|
|
path.resolve(config.paths.projectRoot, 'content', '**', '*'),
|
|
path.resolve(config.paths.projectRoot, 'layouts', '**', '*.njk')
|
|
],
|
|
fn: function (event, file) {
|
|
build(true)
|
|
},
|
|
options: {
|
|
ignored: ['**/.#*', '**/*~', '**/#*#']
|
|
// /\.#|node_modules|~$/
|
|
}
|
|
}]
|
|
})
|
|
}
|
|
|
|
const args = process.argv.slice(2)
|
|
|
|
switch (args[0]) {
|
|
case 'build':
|
|
build()
|
|
break
|
|
case 'serve':
|
|
serve()
|
|
break
|
|
default:
|
|
console.log('Unknown arguments "' + args[0] + '"')
|
|
}
|