Mou*_*udi 6 javascript rollup bootstrap-5
根据 Bootstrap 5 官方文档,我们可以从bootstrap/js/dist(Webpack, rollup, ...) 中导入预编译的 js 文件并构建自定义包。
https://getbootstrap.com/docs/5.0/getting-started/javascript/#individual-or-compiled
在 docs 的优化部分,他们给出了如何导入 js 文件的示例。 https://getbootstrap.com/docs/5.0/customize/optimize/#lean-javascript
问题:
我创建了一个名为bootstrap.js
import 'bootstrap/js/dist/tooltip';
Run Code Online (Sandbox Code Playgroud)
我只想使用Tooltip插件。我使用以下配置进行汇总
const plugins = [
babel({
exclude: 'node_modules/**',
// Include the helpers in each file, at most one copy of each
babelHelpers: 'bundled',
presets: [
[
'@babel/preset-env',
{
loose: true,
bugfixes: true,
modules: false
}
]
]
}),
nodeResolve()
]
const bundle = await rollup.rollup({
input: './js/vendors/bootstrap.js',
plugins,
})
await bundle.write({
format: 'umd',
file: './file.js'
})
Run Code Online (Sandbox Code Playgroud)
生成file.js并使用 HTML 页面后,控制台中会显示错误file.js:1727 Uncaught ReferenceError: process is not defined
此外,我无法使用引导程序语法来初始化Tooltip插件
new bootstrap.Tooltip会给出 undefined 错误bootstrap。
我可以通过从js/src文件夹中导入这些文件并在它们使用时导出它们来实现我想要的,js/src/index.umd.js但遵循有关如何导入其插件的引导程序官方文档似乎无法正常工作。
小智 2
不知道如何剖析你的代码 - 你错过了对 Popper 的全部依赖。
但这就是我会做的(提示:我获取了 BS5 源代码并删除了所有不需要的东西。)
假设您在 Boorstrap 5 的分支上进行编译:
文件: build\rollup.config.mk.js:
'use strict'
const path = require('path')
const { babel } = require('@rollup/plugin-babel')
const { nodeResolve } = require('@rollup/plugin-node-resolve')
const replace = require('@rollup/plugin-replace')
const banner = require('./banner.js')
let fileDest = `bootstrap-mk`
const external = ['@popperjs/core']
const plugins = [
babel({
// Only transpile our source code
exclude: 'node_modules/**',
// Include the helpers in the bundle, at most one copy of each
babelHelpers: 'bundled'
})
]
const globals = {
'@popperjs/core': 'Popper'
}
const rollupConfig = {
input: path.resolve(__dirname, `../js/index.mk.umd.js`),
output: {
banner,
file: path.resolve(__dirname, `../dist/js/${fileDest}.js`),
format: 'umd',
globals
},
external,
plugins
}
rollupConfig.output.name = 'bootstrap'
module.exports = rollupConfig
Run Code Online (Sandbox Code Playgroud)
... 并且 ...
文件: js\index.mk.umd.js
import Tooltip from './src/tooltip'
export default {
Tooltip
}
Run Code Online (Sandbox Code Playgroud)
rollup --config build/rollup.config.mk.js --sourcemap然后从命令行调用: ,或者在packacge.json\“ scripts”部分添加类似的内容:
"js-compile-mk": "rollup --config build/rollup.config.mk.js --sourcemap",
Run Code Online (Sandbox Code Playgroud)
...并npm run js-compile-mk从命令行调用。
输出将是一个名为:( dist\js\bootstrap-mk.js 和一个地图文件)的文件
如果您不想使用分支,而是使用node_modules子文件夹,则可以更改文件中的路径build\rollup.config.mk.js。
| 归档时间: |
|
| 查看次数: |
357 次 |
| 最近记录: |