2018-06-27 11:33:07 +02:00
|
|
|
/*!
|
|
|
|
* Script to build our plugins to use them separately.
|
|
|
|
* Copyright 2018 The Bootstrap Authors
|
|
|
|
* Copyright 2018 Twitter, Inc.
|
|
|
|
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
|
|
|
|
*/
|
|
|
|
|
2018-03-03 22:04:11 +01:00
|
|
|
const path = require('path')
|
|
|
|
const rollup = require('rollup')
|
|
|
|
const babel = require('rollup-plugin-babel')
|
|
|
|
const banner = require('./banner.js')
|
2018-06-27 11:33:07 +02:00
|
|
|
|
2018-09-26 15:05:27 +02:00
|
|
|
const TEST = process.env.NODE_ENV === 'test'
|
2018-06-27 11:33:07 +02:00
|
|
|
const plugins = [
|
|
|
|
babel({
|
|
|
|
exclude: 'node_modules/**', // Only transpile our source code
|
|
|
|
externalHelpersWhitelist: [ // Include only required helpers
|
|
|
|
'defineProperties',
|
|
|
|
'createClass',
|
|
|
|
'inheritsLoose',
|
|
|
|
'defineProperty',
|
|
|
|
'objectSpread'
|
|
|
|
]
|
|
|
|
})
|
|
|
|
]
|
|
|
|
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')
|
|
|
|
}
|
2018-09-26 15:05:27 +02:00
|
|
|
const rootPath = TEST ? '../js/coverage/dist/' : '../js/dist/'
|
2018-06-27 11:33:07 +02:00
|
|
|
|
2018-09-26 15:05:27 +02:00
|
|
|
function build(plugin) {
|
|
|
|
console.log(`Building ${plugin} plugin...`)
|
2018-06-27 11:33:07 +02:00
|
|
|
|
2018-03-03 22:04:11 +01:00
|
|
|
const external = ['hammerjs', 'jquery', 'popper.js']
|
2018-09-26 15:05:27 +02:00
|
|
|
const globals = {
|
2018-03-03 22:04:11 +01:00
|
|
|
hammerjs: 'Hammer',
|
2018-09-26 15:05:27 +02:00
|
|
|
jquery: 'jQuery', // Ensure we use jQuery which is always available even in noConflict mode
|
|
|
|
'popper.js': 'Popper'
|
|
|
|
}
|
2018-06-27 11:33:07 +02:00
|
|
|
|
2018-09-26 15:05:27 +02:00
|
|
|
// Do not bundle Util in plugins
|
|
|
|
if (plugin !== 'Util') {
|
|
|
|
external.push(bsPlugins.Util)
|
|
|
|
globals[bsPlugins.Util] = 'Util'
|
|
|
|
}
|
2018-06-27 11:33:07 +02:00
|
|
|
|
2018-09-26 15:05:27 +02:00
|
|
|
// Do not bundle Tooltip in Popover
|
|
|
|
if (plugin === 'Popover') {
|
|
|
|
external.push(bsPlugins.Tooltip)
|
|
|
|
globals[bsPlugins.Tooltip] = 'Tooltip'
|
|
|
|
}
|
2018-06-27 11:33:07 +02:00
|
|
|
|
2018-09-26 15:05:27 +02:00
|
|
|
const pluginFilename = `${plugin.toLowerCase()}.js`
|
2018-09-26 09:54:46 +02:00
|
|
|
|
2018-09-26 15:05:27 +02:00
|
|
|
rollup.rollup({
|
|
|
|
input: bsPlugins[plugin],
|
|
|
|
plugins,
|
|
|
|
external
|
|
|
|
}).then((bundle) => {
|
|
|
|
bundle.write({
|
|
|
|
banner: banner(pluginFilename),
|
|
|
|
format: 'umd',
|
|
|
|
name: plugin,
|
|
|
|
sourcemap: true,
|
|
|
|
globals,
|
|
|
|
file: path.resolve(__dirname, `${rootPath}${pluginFilename}`)
|
2018-06-27 11:33:07 +02:00
|
|
|
})
|
2018-09-26 15:05:27 +02:00
|
|
|
.then(() => console.log(`Building ${plugin} plugin... Done!`))
|
|
|
|
.catch((err) => console.error(`${plugin}: ${err}`))
|
2018-06-27 11:33:07 +02:00
|
|
|
})
|
2018-09-26 15:05:27 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
Object.keys(bsPlugins).forEach((plugin) => build(plugin))
|