diff --git a/build/build.js b/build/build.js index 6fa2b123b..02bc23b57 100644 --- a/build/build.js +++ b/build/build.js @@ -9,8 +9,8 @@ const version = process.env.VERSION || require('../package.json').version const chokidar = require('chokidar') const path = require('path') -const build = function (opts) { - rollup +async function build(opts) { + await rollup .rollup({ input: opts.input, plugins: (opts.plugins || []).concat([ @@ -27,31 +27,34 @@ const build = function (opts) { var dest = 'lib/' + (opts.output || opts.input) console.log(dest) - bundle.write({ + return bundle.write({ format: 'iife', file: dest, strict: false }) }) - .catch(function (err) { - console.error(err) - }) } -const buildCore = function () { - build({ + +async function buildCore() { + const promises = [] + + promises.push(build({ input: 'src/core/index.js', output: 'docsify.js' - }) + })) if (isProd) { - build({ + promises.push(build({ input: 'src/core/index.js', output: 'docsify.min.js', plugins: [uglify()] - }) + })) } + + await Promise.all(promises) } -const buildAllPlugin = function () { + +async function buildAllPlugin() { var plugins = [ {name: 'search', input: 'search/index.js'}, {name: 'ga', input: 'ga.js'}, @@ -64,8 +67,8 @@ const buildAllPlugin = function () { {name: 'gitalk', input: 'gitalk.js'} ] - plugins.forEach(item => { - build({ + const promises = plugins.map(item => { + return build({ input: 'src/plugins/' + item.input, output: 'plugins/' + item.name + '.js' }) @@ -73,47 +76,59 @@ const buildAllPlugin = function () { if (isProd) { plugins.forEach(item => { - build({ + promises.push(build({ input: 'src/plugins/' + item.input, output: 'plugins/' + item.name + '.min.js', plugins: [uglify()] - }) + })) }) } + + await Promise.all(promises) } -if (!isProd) { - chokidar - .watch(['src/core', 'src/plugins'], { - atomic: true, - awaitWriteFinish: { - stabilityThreshold: 1000, - pollInterval: 100 - } - }) - .on('change', p => { - console.log('[watch] ', p) - const dirs = p.split(path.sep) - if (dirs[1] === 'core') { - buildCore() - } else if (dirs[2]) { - const name = path.basename(dirs[2], '.js') - const input = `src/plugins/${name}${ - /\.js/.test(dirs[2]) ? '' : '/index' - }.js` +async function main() { + if (!isProd) { + chokidar + .watch(['src/core', 'src/plugins'], { + atomic: true, + awaitWriteFinish: { + stabilityThreshold: 1000, + pollInterval: 100 + } + }) + .on('change', p => { + console.log('[watch] ', p) + const dirs = p.split(path.sep) + if (dirs[1] === 'core') { + buildCore() + } else if (dirs[2]) { + const name = path.basename(dirs[2], '.js') + const input = `src/plugins/${name}${ + /\.js/.test(dirs[2]) ? '' : '/index' + }.js` - build({ - input, - output: 'plugins/' + name + '.js' - }) - } - }) - .on('ready', () => { - console.log('[start]') - buildCore() + build({ + input, + output: 'plugins/' + name + '.js' + }) + } + }) + .on('ready', () => { + console.log('[start]') + buildCore() + buildAllPlugin() + }) + } else { + await Promise.all([ + buildCore(), buildAllPlugin() - }) -} else { - buildCore() - buildAllPlugin() + ]) + } } + +main().catch((e) => { + console.error(e) + process.exit(1) +}) + diff --git a/build/css.js b/build/css.js index 060506421..3ae9701fe 100644 --- a/build/css.js +++ b/build/css.js @@ -5,8 +5,8 @@ const {spawn} = require('child_process') const args = process.argv.slice(2) fs.readdir(path.join(__dirname, '../src/themes'), (err, files) => { if (err) { - console.log('err', err) - return + console.error('err', err) + process.exit(1) } files.map(async (file) => { if (/\.styl/g.test(file)) { @@ -31,7 +31,14 @@ fs.readdir(path.join(__dirname, '../src/themes'), (err, files) => { }); stylusCMD.on('close', (code) => { - console.log(`[Stylus Build ] child process exited with code ${code}`); + const message = `[Stylus Build ] child process exited with code ${code}` + + if (code !== 0) { + console.error(message); + process.exit(code) + } else { + console.log(message); + } }); } else { return diff --git a/build/mincss.js b/build/mincss.js index f6c5ec215..0c9c72280 100644 --- a/build/mincss.js +++ b/build/mincss.js @@ -8,5 +8,8 @@ files.forEach(file => { file = path.resolve('lib/themes', file) cssnano(fs.readFileSync(file)).then(result => { fs.writeFileSync(file, result.css) + }).catch(e => { + console.error(e) + process.exit(1) }) }) diff --git a/build/ssr.js b/build/ssr.js index 16b93cac4..01fdd0518 100644 --- a/build/ssr.js +++ b/build/ssr.js @@ -24,11 +24,12 @@ rollup var dest = 'packages/docsify-server-renderer/build.js' console.log(dest) - bundle.write({ + return bundle.write({ format: 'cjs', file: dest }) }) .catch(function (err) { console.error(err) + process.exit(1) })