Working loading of plugin

This commit is contained in:
Samy Pesse
2016-09-20 19:19:01 +02:00
parent 6d58a90613
commit ced0be930d
12 changed files with 104 additions and 53 deletions
+20 -7
View File
@@ -1,13 +1,26 @@
const program = require('commander');
const pkg = require('../package.json');
#! /usr/bin/env node
program.version(pkg.version)
const program = require('commander');
const path = require('path');
const winston = require('winston');
const pkg = require('../package.json');
const compile = require('./compile');
const resolve = (input => path.resolve(process.cwd(), input));
program.version(pkg.version);
winston.cli();
program
.command('build [plugin]')
.description('build a plugin')
.action(function(plugin, options) {
.command('build [input] [output]')
.description('build a browser plugin')
.action(function(input, output, options) {
compile(resolve(input), resolve(output))
.then(
() => winston.info('Plugin compiled successfully'),
(err) => winston.error('Error: ', err)
);
});
+39
View File
@@ -0,0 +1,39 @@
const fs = require('fs');
const Promise = require('q');
const browserify = require('browserify');
const babelify = require('babelify');
/**
* Compile a plugin to work with "gitbook-core" in the browser.
* @param {String} inputFile
* @param {String} outputFile
* @return {Promise}
*/
function compilePlugin(inputFile, outputFile) {
const d = Promise.defer();
const b = browserify({
standalone: 'GitBookPlugin'
});
b.add(inputFile);
b.external('react');
b.external('react-dom');
b.external('gitbook-core');
b.transform(babelify, {
presets: [
require('babel-preset-es2015'),
require('babel-preset-react')
]
});
const output = fs.createWriteStream(outputFile);
b.bundle()
.pipe(output)
.on('error', (err) => d.reject(err))
.on('end', () => d.resolve());
return d.promise;
}
module.exports = compilePlugin;