使用带有 inject = true 的 HtmlWebpackPlugin 不会缩小 ES6 代码
Using HtmlWebpackPlugin with inject = true does not minify ES6 code
我正在尝试从模板文件创建一个 html 文件,将一些 JavaScript 内联注入到 html 文件中。
这很好用,除了当我在我的 js 文件异步中使用一些 ES6 语法时,特别是在我的示例中。然后它将所有代码保留在该特定代码块中。
我想知道是否有一种方法可以在我的代码缩小之前对其进行转译?
如有任何帮助,我们将不胜感激。
我的 webpack.config.js 文件如下所示
var path = require('path');
var fs = require("fs");
const HtmlWebpackPlugin = require('html-webpack-plugin');
const ExtractTextPlugin = require('extract-text-webpack-plugin');
const UglifyJsPlugin = require('uglifyjs-webpack-plugin');
const webpack = require('webpack');
const Uglify = require("uglifyjs-webpack-plugin");
module.exports = {
context: __dirname,
entry: './TestFile/index.js',
output: {
path: path.resolve(__dirname, 'TestFile')
},
module: {
rules: [
{
test: /\.js$/,
use: 'babel-loader',
exclude: /node_modules/,
},
],
},
plugins: [
new HtmlWebpackPlugin({
filename: 'TestFile.html',
template: './TestFile/TestFileTemplate.html',
inject: true,
jquery: fs.readFileSync('./TestFile/js/jquery.js', 'utf8'),
gds: fs.readFileSync('./TestFile/js/extras.js', 'utf8'),
style: fs.readFileSync('./TestFile/css/style.css', 'utf8'),
minify: {
html5: true,
collapseWhitespace: true,
minifyCSS: true,
minifyJS: true,
removeScriptTypeAttributes: true,
removeStyleLinkTypeAttributese: true,
useShortDoctype: true
}
})
]
};
我假设您想在此处缩小文件:
gds: fs.readFileSync('./TestFile/js/extras.js', 'utf8'),
您可以使用babel转译文件内容:
gds: require("@babel/core").transformSync(fs.readFileSync('./TestFile/js/extras.js', 'utf8'), {
"presets": ["@babel/preset-env"]
}).code;
还有html-webpack-inline-source-plugin
。这可能是一种更简洁的内联文件方式。
我正在尝试从模板文件创建一个 html 文件,将一些 JavaScript 内联注入到 html 文件中。
这很好用,除了当我在我的 js 文件异步中使用一些 ES6 语法时,特别是在我的示例中。然后它将所有代码保留在该特定代码块中。
我想知道是否有一种方法可以在我的代码缩小之前对其进行转译?
如有任何帮助,我们将不胜感激。
我的 webpack.config.js 文件如下所示
var path = require('path');
var fs = require("fs");
const HtmlWebpackPlugin = require('html-webpack-plugin');
const ExtractTextPlugin = require('extract-text-webpack-plugin');
const UglifyJsPlugin = require('uglifyjs-webpack-plugin');
const webpack = require('webpack');
const Uglify = require("uglifyjs-webpack-plugin");
module.exports = {
context: __dirname,
entry: './TestFile/index.js',
output: {
path: path.resolve(__dirname, 'TestFile')
},
module: {
rules: [
{
test: /\.js$/,
use: 'babel-loader',
exclude: /node_modules/,
},
],
},
plugins: [
new HtmlWebpackPlugin({
filename: 'TestFile.html',
template: './TestFile/TestFileTemplate.html',
inject: true,
jquery: fs.readFileSync('./TestFile/js/jquery.js', 'utf8'),
gds: fs.readFileSync('./TestFile/js/extras.js', 'utf8'),
style: fs.readFileSync('./TestFile/css/style.css', 'utf8'),
minify: {
html5: true,
collapseWhitespace: true,
minifyCSS: true,
minifyJS: true,
removeScriptTypeAttributes: true,
removeStyleLinkTypeAttributese: true,
useShortDoctype: true
}
})
]
};
我假设您想在此处缩小文件:
gds: fs.readFileSync('./TestFile/js/extras.js', 'utf8'),
您可以使用babel转译文件内容:
gds: require("@babel/core").transformSync(fs.readFileSync('./TestFile/js/extras.js', 'utf8'), {
"presets": ["@babel/preset-env"]
}).code;
还有html-webpack-inline-source-plugin
。这可能是一种更简洁的内联文件方式。