Skip to content

Commit

Permalink
feat(plugins): allow to import separate plugins
Browse files Browse the repository at this point in the history
  • Loading branch information
Johann-S committed Jun 27, 2018
1 parent e57a2f2 commit 31422db
Show file tree
Hide file tree
Showing 25 changed files with 4,488 additions and 8 deletions.
80 changes: 80 additions & 0 deletions build/build-plugins.js
@@ -0,0 +1,80 @@
/*!
* Script to build our plugins to use them separately.
* Copyright 2017-2018 The Bootstrap Authors
* Copyright 2017-2018 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
*/

'use strict'

const rollup = require('rollup')
const path = require('path')
const babel = require('rollup-plugin-babel')

const plugins = [
babel({
exclude: 'node_modules/**', // Only transpile our source code
externalHelpersWhitelist: [ // Include only required helpers
'defineProperties',
'createClass',
'inheritsLoose',
'defineProperty',
'objectSpread'
]
})
]

const format = 'umd'
const defaultExternal = ['jquery', 'popper.js']
const bsPlugins = {
Alert: path.resolve(__dirname, '../js/src/alert.js'),
Button: path.resolve(__dirname, '../js/src/button.js'),
Carousel: path.resolve(__dirname, '../js/src/carousel.js'),
Collapse: path.resolve(__dirname, '../js/src/collapse.js'),
Dropdown: path.resolve(__dirname, '../js/src/dropdown.js'),
Modal: path.resolve(__dirname, '../js/src/modal.js'),
Popover: path.resolve(__dirname, '../js/src/popover.js'),
ScrollSpy: path.resolve(__dirname, '../js/src/scrollspy.js'),
Tab: path.resolve(__dirname, '../js/src/tab.js'),
Tooltip: path.resolve(__dirname, '../js/src/tooltip.js'),
Util: path.resolve(__dirname, '../js/src/util.js')
}

Object.keys(bsPlugins)
.forEach((pluginKey) => {
console.log(`Building ${pluginKey} plugin...`)

const external = [].concat(defaultExternal)
const globals = {
jquery: 'jQuery', // Ensure we use jQuery which is always available even in noConflict mode
'popper.js': 'Popper'
}

// Do not bundle Util in plugins
if (pluginKey !== 'Util') {
external.push(bsPlugins.Util)
globals['./util'] = 'Util'
}

// Do not bundle Tooltip in Popover
if (pluginKey === 'Popover') {
external.push(bsPlugins.Tooltip)
globals['./tooltip'] = 'Tooltip'
}

rollup.rollup({
input: bsPlugins[pluginKey],
plugins,
external
}).then((bundle) => {
bundle.write({
format,
name: pluginKey,
sourcemap: true,
globals,
file: path.resolve(__dirname, `../dist/js/plugins/${pluginKey.toLowerCase()}.js`)
})
.then(() => console.log(`Building ${pluginKey} plugin... Done !`))
.catch((err) => console.error(`${pluginKey}: ${err}`))
})
})
204 changes: 204 additions & 0 deletions dist/js/plugins/alert.js

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

1 change: 1 addition & 0 deletions dist/js/plugins/alert.js.map

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

0 comments on commit 31422db

Please sign in to comment.