-
-
Notifications
You must be signed in to change notification settings - Fork 78.8k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Create a bundled release of Bootstrap with Popper.js inside #23735
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -8,7 +8,5 @@ | |
} | ||
] | ||
], | ||
"plugins": [ | ||
"transform-es2015-modules-strip" | ||
] | ||
"plugins": ["external-helpers"] | ||
} |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,43 @@ | ||
const path = require('path') | ||
const babel = require('rollup-plugin-babel') | ||
const resolve = require('rollup-plugin-node-resolve') | ||
const BUNDLE = process.env.BUNDLE === 'true' | ||
|
||
var fileDest = 'bootstrap.js' | ||
var external = ['jquery', 'popper.js'] | ||
const plugins = [ | ||
babel({ | ||
exclude: 'node_modules/**', // only transpile our source code | ||
externalHelpersWhitelist: [ // include only required helpers | ||
'typeof', | ||
'classCallCheck', | ||
'createClass', | ||
'inherits', | ||
'possibleConstructorReturn' | ||
] | ||
}) | ||
] | ||
const globals = { | ||
jquery: '$', | ||
'popper.js': 'Popper' | ||
} | ||
|
||
if (BUNDLE) { | ||
fileDest = 'bootstrap.bundle.js' | ||
// remove last entry in external array to bundle Popper | ||
external.pop() | ||
delete globals['popper.js'] | ||
plugins.push(resolve()) | ||
} | ||
|
||
module.exports = { | ||
input: path.resolve(__dirname, '../js/src/index.js'), | ||
output: { | ||
file: path.resolve(__dirname, `../dist/js/${fileDest}`), | ||
format: 'iife' | ||
}, | ||
name: 'bootstrap', | ||
external: external, | ||
globals: globals, | ||
plugins: plugins | ||
} |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,41 +1,19 @@ | ||
const fs = require('fs') | ||
const fs = require('fs') | ||
const path = require('path') | ||
const pkg = require(path.resolve(__dirname, '../package.json')) | ||
const year = new Date().getFullYear() | ||
|
||
fs.readFile('package.json', (err, data) => { | ||
if (err) { | ||
throw err | ||
} | ||
const pathBoostrap = path.resolve(__dirname, '../dist/js/bootstrap.js') | ||
const pathBootstrapBundle = path.resolve(__dirname, '../dist/js/bootstrap.bundle.js') | ||
const contentFile = fs.readFileSync(pathBoostrap, { encoding: 'UTF8' }) | ||
const contentBundleFile = fs.readFileSync(pathBootstrapBundle, { encoding: 'UTF8' }) | ||
|
||
const pkg = JSON.parse(data) | ||
const year = new Date().getFullYear() | ||
|
||
const stampTop = | ||
const stamp = | ||
`/*! | ||
* Bootstrap v${pkg.version} (${pkg.homepage}) | ||
* Copyright 2011-${year} ${pkg.author} | ||
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) | ||
*/ | ||
|
||
if (typeof jQuery === 'undefined') { | ||
throw new Error('Bootstrap\\'s JavaScript requires jQuery. jQuery must be included before Bootstrap\\'s JavaScript.') | ||
} | ||
|
||
(function ($) { | ||
var version = $.fn.jquery.split(' ')[0].split('.') | ||
if ((version[0] < 3) || (version[0] >= 4)) { | ||
throw new Error('Bootstrap\\'s JavaScript requires at least jQuery v3.0.0 but less than v4.0.0') | ||
} | ||
})(jQuery); | ||
|
||
(function () { | ||
` | ||
const stampEnd = ` | ||
})();` | ||
|
||
process.stdout.write(stampTop) | ||
|
||
process.stdin.on('end', () => { | ||
process.stdout.write(stampEnd) | ||
}) | ||
|
||
process.stdin.pipe(process.stdout) | ||
}) | ||
fs.writeFileSync(pathBoostrap, `${stamp}${contentFile}`, { encoding: 'UTF8' }) | ||
fs.writeFileSync(pathBootstrapBundle, `${stamp}${contentBundleFile}`, { encoding: 'UTF8' }) |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,46 @@ | ||
import $ from 'jquery' | ||
import Alert from './alert' | ||
import Button from './button' | ||
import Carousel from './carousel' | ||
import Collapse from './collapse' | ||
import Dropdown from './dropdown' | ||
import Modal from './modal' | ||
import Popover from './popover' | ||
import Scrollspy from './scrollspy' | ||
import Tab from './tab' | ||
import Tooltip from './tooltip' | ||
import Util from './util' | ||
|
||
/** | ||
* -------------------------------------------------------------------------- | ||
* Bootstrap (v4.0.0-alpha.6): index.js | ||
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) | ||
* -------------------------------------------------------------------------- | ||
*/ | ||
|
||
if (typeof jQuery === 'undefined') { | ||
throw new Error('Bootstrap\'s JavaScript requires jQuery. jQuery must be included before Bootstrap\'s JavaScript.') | ||
} | ||
|
||
(() => { | ||
const version = $.fn.jquery.split(' ')[0].split('.') | ||
const min = 3 | ||
const max = 4 | ||
if (version[0] < min || version[0] >= max) { | ||
throw new Error('Bootstrap\'s JavaScript requires at least jQuery v3.0.0 but less than v4.0.0') | ||
} | ||
})(jQuery) | ||
|
||
export { | ||
Util, | ||
Alert, | ||
Button, | ||
Carousel, | ||
Collapse, | ||
Dropdown, | ||
Modal, | ||
Popover, | ||
Scrollspy, | ||
Tab, | ||
Tooltip | ||
} |
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -28,6 +28,7 @@ | |
"global-require": "off", | ||
"no-process-env": "off", | ||
"no-process-exit": "off", | ||
"no-sync": "off", | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Isn't this off by default? There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. unfortunately no 😄 There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Weird, doesn't seem enabled here https://eslint.org/docs/rules/#nodejs-and-commonjs There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. That's because of this line here : https://github.com/twbs/bootstrap/blob/v4-dev/js/.eslintrc.json#L122 |
||
|
||
// Stylistic Issues | ||
"brace-style": "off", | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
FYI with that attribute a global
bootstrap
var will be added to the scope of folk's applications, Rollup do not accept to bundle without a name foriife