如何使用 Gulp 为 Bootstrap 5 导入 Popper?
我使用 Gulp 仅导入用于导航栏的 Collapse,但现在我还需要依赖于 Popper 的 Dropdown 组件。 如果我像下面的示例一样包含 Popper,则会在浏览器控制台中收到错误 Uncaught ReferenceError: require$$0 is not Defined
import Popper from "popper.js";
//import './node_modules/@popperjs/core/dist/umd/popper.js';
//import { createPopper } from './node_modules/@popperjs/core';
//import Alert from './node_modules/bootstrap/js/dist/alert';
//import BaseComponent from './node_modules/bootstrap/js/dist/base-component';
//import Button from './node_modules/bootstrap/js/dist/button';
//import Carousel from './node_modules/bootstrap/js/dist/carousel';
import Collapse from './node_modules/bootstrap/js/dist/collapse';
import Dropdown from './node_modules/bootstrap/js/dist/dropdown';
//import Modal from './node_modules/bootstrap/js/dist/modal';
//import Offcanvas from './node_modules/bootstrap/js/dist/offcanvas';
//import Popover from './node_modules/bootstrap/js/dist/popover';
//import Scrollspy from './node_modules/bootstrap/js/dist/scrollspy';
//import Tab from './node_modules/bootstrap/js/dist/tab';
//import Toast from './node_modules/bootstrap/js/dist/toast';
//import Tooltip from './node_modules/bootstrap/js/dist/tooltip';
package.json
{
"dependencies": {
"@popperjs/core": "^2.11.2",
"bootstrap": "^5.1.3",
"rollup": "^2.68.0"
},
"devDependencies": {
"@babel/core": "^7.17.5",
"@babel/preset-env": "^7.16.11",
"@babel/register": "^7.17.0",
"@rollup/plugin-babel": "^5.3.0",
"@rollup/plugin-commonjs": "^21.0.1",
"@rollup/plugin-node-resolve": "^13.1.3",
"@rollup/stream": "^2.0.0",
"gulp": "^4.0.2",
"gulp-size": "^4.0.1",
"gulp-sourcemaps": "^3.0.0",
"gulp-uglify": "^3.0.2",
"vinyl-buffer": "^1.0.1",
"vinyl-source-stream": "^2.0.0"
}
}
gulpfile.babel。 js
import gulp from 'gulp';
import uglify from 'gulp-uglify';
const sourcemaps = require('gulp-sourcemaps');
const source = require('vinyl-source-stream');
const buffer = require('vinyl-buffer');
const rollup = require('@rollup/stream');
const size = require('gulp-size');
var babel = require('@rollup/plugin-babel'); // *Optional* Depends on what JS features you want vs what browsers you need to support, *Not needed* for basic ES6 module import syntax support
var commonjs = require('@rollup/plugin-commonjs'); // Add support for require() syntax
var nodeResolve = require('@rollup/plugin-node-resolve'); // Add support for importing from node_modules folder like import x from 'module-name'
var cache; // Cache needs to be initialized outside of the Gulp task
var mainJSFile = './bundle-main.js';
var endFile = 'bundle.js';
var dest = './build/';
gulp.task('js', function() {
return rollup({
input: mainJSFile,
// Apply plugins
plugins: [babel, commonjs(), nodeResolve],
cache: cache,
output: {
// Output bundle is intended for use in browsers
// (iife = "Immediately Invoked Function Expression")
format: 'iife',
sourcemap: true
}
})
.on('bundle', function(bundle) {
// Update cache data after every bundle is created
cache = bundle;
})
// Name of the output file.
.pipe(source(endFile))
.pipe(buffer())
.pipe(uglify())
.pipe(size())
.pipe(sourcemaps.init({loadMaps: true}))
.pipe(sourcemaps.write('.'))
.pipe(gulp.dest(dest));
});
gulp.task('watch', function(done){
gulp.watch([mainJSFile], gulp.series('js'));
done();
})
I am using Gulp to import only Collapse which I use for Navbar but now I also need Dropdown component which is relying on Popper.
If I include Popper like in the following example, I get an error in browser console Uncaught ReferenceError: require$$0 is not defined
import Popper from "popper.js";
//import './node_modules/@popperjs/core/dist/umd/popper.js';
//import { createPopper } from './node_modules/@popperjs/core';
//import Alert from './node_modules/bootstrap/js/dist/alert';
//import BaseComponent from './node_modules/bootstrap/js/dist/base-component';
//import Button from './node_modules/bootstrap/js/dist/button';
//import Carousel from './node_modules/bootstrap/js/dist/carousel';
import Collapse from './node_modules/bootstrap/js/dist/collapse';
import Dropdown from './node_modules/bootstrap/js/dist/dropdown';
//import Modal from './node_modules/bootstrap/js/dist/modal';
//import Offcanvas from './node_modules/bootstrap/js/dist/offcanvas';
//import Popover from './node_modules/bootstrap/js/dist/popover';
//import Scrollspy from './node_modules/bootstrap/js/dist/scrollspy';
//import Tab from './node_modules/bootstrap/js/dist/tab';
//import Toast from './node_modules/bootstrap/js/dist/toast';
//import Tooltip from './node_modules/bootstrap/js/dist/tooltip';
package.json
{
"dependencies": {
"@popperjs/core": "^2.11.2",
"bootstrap": "^5.1.3",
"rollup": "^2.68.0"
},
"devDependencies": {
"@babel/core": "^7.17.5",
"@babel/preset-env": "^7.16.11",
"@babel/register": "^7.17.0",
"@rollup/plugin-babel": "^5.3.0",
"@rollup/plugin-commonjs": "^21.0.1",
"@rollup/plugin-node-resolve": "^13.1.3",
"@rollup/stream": "^2.0.0",
"gulp": "^4.0.2",
"gulp-size": "^4.0.1",
"gulp-sourcemaps": "^3.0.0",
"gulp-uglify": "^3.0.2",
"vinyl-buffer": "^1.0.1",
"vinyl-source-stream": "^2.0.0"
}
}
gulpfile.babel.js
import gulp from 'gulp';
import uglify from 'gulp-uglify';
const sourcemaps = require('gulp-sourcemaps');
const source = require('vinyl-source-stream');
const buffer = require('vinyl-buffer');
const rollup = require('@rollup/stream');
const size = require('gulp-size');
var babel = require('@rollup/plugin-babel'); // *Optional* Depends on what JS features you want vs what browsers you need to support, *Not needed* for basic ES6 module import syntax support
var commonjs = require('@rollup/plugin-commonjs'); // Add support for require() syntax
var nodeResolve = require('@rollup/plugin-node-resolve'); // Add support for importing from node_modules folder like import x from 'module-name'
var cache; // Cache needs to be initialized outside of the Gulp task
var mainJSFile = './bundle-main.js';
var endFile = 'bundle.js';
var dest = './build/';
gulp.task('js', function() {
return rollup({
input: mainJSFile,
// Apply plugins
plugins: [babel, commonjs(), nodeResolve],
cache: cache,
output: {
// Output bundle is intended for use in browsers
// (iife = "Immediately Invoked Function Expression")
format: 'iife',
sourcemap: true
}
})
.on('bundle', function(bundle) {
// Update cache data after every bundle is created
cache = bundle;
})
// Name of the output file.
.pipe(source(endFile))
.pipe(buffer())
.pipe(uglify())
.pipe(size())
.pipe(sourcemaps.init({loadMaps: true}))
.pipe(sourcemaps.write('.'))
.pipe(gulp.dest(dest));
});
gulp.task('watch', function(done){
gulp.watch([mainJSFile], gulp.series('js'));
done();
})
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
如果有效的话尝试这样做
try doing this if it works