diff options
-rw-r--r-- | lib/browser.js | 5 | ||||
-rw-r--r-- | lib/constants/defaultPlugins.js | 23 | ||||
-rw-r--r-- | lib/plugins/installPlugins.js | 10 | ||||
-rw-r--r-- | lib/plugins/listAll.js | 14 |
4 files changed, 32 insertions, 20 deletions
diff --git a/lib/browser.js b/lib/browser.js index 9deb001..bb84044 100644 --- a/lib/browser.js +++ b/lib/browser.js @@ -8,6 +8,8 @@ module.exports = { FS: require('./models/fs'), Summary: require('./models/summary'), Glossary: require('./models/glossary'), + Config: require('./models/config'), + PluginDependency: require('./models/pluginDependency'), // Modifiers SummaryModifier: Modifiers.Summary, @@ -15,5 +17,6 @@ module.exports = { // Constants CONFIG_FILES: require('./constants/configFiles.js'), - IGNORE_FILES: require('./constants/ignoreFiles.js') + IGNORE_FILES: require('./constants/ignoreFiles.js'), + DEFAULT_PLUGINS: require('./constants/defaultPlugins') }; diff --git a/lib/constants/defaultPlugins.js b/lib/constants/defaultPlugins.js index e6ea2bb..6d15971 100644 --- a/lib/constants/defaultPlugins.js +++ b/lib/constants/defaultPlugins.js @@ -1,9 +1,24 @@ var Immutable = require('immutable'); +var PluginDependency = require('../models/pluginDependency'); + +var pkg = require('../../package.json'); + +/** + * Create a PluginDependency from a dependency of gitbook + * @param {String} pluginName + * @return {PluginDependency} + */ +function createFromDependency(pluginName) { + var npmID = PluginDependency.nameToNpmID(pluginName); + var version = pkg.dependencies[npmID]; + + return PluginDependency.create(pluginName, version); +} /* - List of default plugins for all books, - default plugins should be installed in node dependencies of GitBook -*/ + * List of default plugins for all books, + * default plugins should be installed in node dependencies of GitBook + */ module.exports = Immutable.List([ 'highlight', 'search', @@ -11,4 +26,4 @@ module.exports = Immutable.List([ 'sharing', 'fontsettings', 'theme-default' -]); +]).map(createFromDependency); diff --git a/lib/plugins/installPlugins.js b/lib/plugins/installPlugins.js index a0365b3..307c41e 100644 --- a/lib/plugins/installPlugins.js +++ b/lib/plugins/installPlugins.js @@ -1,11 +1,9 @@ var npmi = require('npmi'); -var pkg = require('../../package.json'); var DEFAULT_PLUGINS = require('../constants/defaultPlugins'); var Promise = require('../utils/promise'); var installPlugin = require('./installPlugin'); - /** Install plugin requirements for a book @@ -20,13 +18,17 @@ function installPlugins(book) { // Remove default plugins // (only if version is same as installed) plugins = plugins.filterNot(function(plugin) { + var dependency = DEFAULT_PLUGINS.find(function(dep) { + return dep.getName() === plugin.getName(); + }); + return ( // Disabled plugin !plugin.isEnabled() || // Or default one installed in GitBook itself - (DEFAULT_PLUGINS.includes(plugin.getName()) && - plugin.getVersion() === pkg.dependencies[plugin.getNpmID()]) + (dependency && + plugin.getVersion() === dependency.getVersion()) ); }); diff --git a/lib/plugins/listAll.js b/lib/plugins/listAll.js index 9b2a96b..cbeb06b 100644 --- a/lib/plugins/listAll.js +++ b/lib/plugins/listAll.js @@ -1,7 +1,6 @@ var Immutable = require('immutable'); var Plugin = require('../models/plugin'); -var pkg = require('../../package.json'); var DEFAULT_PLUGINS = require('../constants/defaultPlugins'); /** @@ -20,6 +19,9 @@ function listAll(deps) { return plugin.getName(); }); + // Concat with default plugins + deps = DEFAULT_PLUGINS.concat(deps); + // Convert to an ordered map of Plugin var plugins = deps .map(function(dep) { @@ -29,16 +31,6 @@ function listAll(deps) { }); plugins = Immutable.OrderedMap(plugins); - // Append default plugins - DEFAULT_PLUGINS.forEach(function(pluginName) { - if (plugins.has(pluginName)) return; - - plugins = plugins.set(pluginName, new Plugin({ - name: pluginName, - version: pkg.dependencies[Plugin.nameToNpmID(pluginName)] - })); - }); - // Remove plugins plugins = plugins.filterNot(function(plugin, name) { return toRemove.includes(name); |