javascript - 使用 Gulp 4 导入/捆绑 Bootstrap 5 或 Popper.js 会生成 LICENSE.js 文件?
问题描述
我在 Bootstrap 5 项目中使用 Gulp 4 和 Webpack 5,当我捆绑我的脚本时,Gulp 会生成一个bundle.js
(如预期的那样),但它也会生成一个bundle.js.LICENSE.js
文件。
我在构建任务中看不到任何会创建它的东西。
似乎只有当 Iimport 'bootstrap'
或import Popper from 'popper.js/dist/umd/popper'
.
有没有办法禁用该许可证文件的生成?我猜 Bootstrap 5 js 中有一些东西迫使 Gulp 或 Webpack 创建该文件(?)
任何想法将不胜感激。这是我的构建脚本任务:
// Build Scripts Task
const buildScripts = (mode) => (done) => {
let streamMode;
if (mode === 'development') {
streamMode = require('./webpack/config.development.js');
} else if (mode === 'production') {
streamMode = require('./webpack/config.production.js');
} else {
streamMode = undefined;
}
['development', 'production'].includes(mode) ? pump([
gulp.src(srcPath('js')),
vinylNamed(),
webpackStream(streamMode, webpack),
gulpSourcemaps.init({ loadMaps: true }),
through2.obj(function (file, enc, cb) {
const isSourceMap = /\.map$/.test(file.path);
if (!isSourceMap) {
this.push(file);
}
cb();
}),
gulpBabel({
presets: ['@babel/preset-env'],
}),
...((mode === 'production') ? [gulpUglify()] : []),
gulpSourcemaps.write('./'),
gulp.dest(distPath('js')),
browserSync.stream(),
], done) : undefined;
};
解决方案
Webpack 用于优化文件的插件称为 Terser,它具有将与特定模式匹配的内联注释提取到外部文件的选项(默认情况下是您所看到的许可模式)。
https://webpack.js.org/plugins/terser-webpack-plugin/
module.exports = {
optimization: {
minimize: true,
minimizer: [
new TerserPlugin({
terserOptions: {
//...
extractComments: true
},
}),
],
},
}
默认情况下,使用 /^**!|@preserve|@license|@cc_on/i 正则表达式条件仅提取评论并删除剩余评论。如果原始文件名为 foo.js,则注释将存储到 foo.js.LICENSE.txt。terserOptions.format.comments 选项指定是否保留评论,即可以保留一些评论(例如注释),同时提取其他评论,甚至保留已提取的评论。
签入你的config.production.js
webpack 文件,看看那里是否使用了这些选项。它确实默认为true
。
推荐阅读
- powershell - 如何修复windows10中powershell中的DownloadFile错误
- matlab - 在 matLab 中使用给定的 X、Y 和时间戳 T 绘制电影
- c - 在 C 中使用已实现的队列构建 BFS
- python - Google App Script API 无法验证“请求包含无效参数”
- php - PHP 模数运算符在计算器中不起作用
- javascript - 如何将所有路由重定向到nest.js中的index.html(Angular)?
- java - 如何从 Windows 上的 Java 控制台应用程序中确定当前活动的代码页?
- java - 我可以使用哪些命令来查看详细信息
某种Java类? - sql - 内部连接三个表并从其中两个表中选择一列时,SELECT 语句不返回任何结果
- python-3.x - 为什么在 Python 中读取文件时撇号(“'”)会变成▒?