webpack直接打包html页面

  1. 首先确保已经安装了Node.js和NPM。如果没有安装,需要先去官网下载并按照指引进行安装。
  2. 在命令行中创建一个新的项目文件夹,然后进入该文件夹。
  3. 初始化项目,运行npm init -y来生成默认的package.json文件。这将为我们提供所需的配置信息。
  4. 接下来,我们需要安装webpack作为构建工具。运行npm install webpack --save-dev来安装webpack到开发依赖(--save-dev)中。
  5. 同样地,还需要安装其他必要的loader和plugin。根据自己的需求选择合适的loader和plugin,比如babel、css loader等。运行类似于npm install babel-loader css-loader style-loader file-loader url-loader html-webpack-plugin --save-dev的命令来安装相应的loader和plugin。
  6. 安装 npm install --save-dev mini-css-extract-plugin
  7. 现在,我们需要创建一个Webpack配置文件。在项目根目录下创建一个名为"webpack.config.js"的文件见附件
  8. 在根目录下创建src文件夹,把所有的html复制过来
  9. 最后在命令行中运行 npx webpack进行打包
  10. 
    const HtmlWebpackPlugin = require("html-webpack-plugin");
    //将css单独打包成一个文件的插件,它为每个包含css的js文件都创建一个css文件
    const MiniCssExtractPlugin = require("mini-css-extract-plugin");
    const path = require('path');
    //要打包的页面列表
    const pages = ['index',
    			'app',
    			'footer',
    			'header'
    ];
    let entry = {};
    let plugins = [];
    const init = () => {
    	pages.map(name => {
    		plugins.push(
    		new HtmlWebpackPlugin({
    			minify: false, //是否压缩
    			template: path.join(__dirname,`/src/${name}.html`), //模板文件
    			filename: path.join(__dirname,`/dist/${name}.html`), //输出文件名
    			inject: 'body',//脚本放置页面位置
    			chunks: [name],
    			hash: false
    		})
    		);
    		entry[name] = `./src/${name}.html`
    	});
    	//最后加上打包css
    	plugins.push(
    		new MiniCssExtractPlugin({
    			// 这里的配置和webpackOptions.output中的配置相似
    			// 即可以通过在名字前加路径,来决定打包后的文件存在的路径
    			filename:'css/[name].[hash].css',
    			chunkFilename:'css/[id].[hash].css',
    		})
    	)
    }
    init();
    module.exports = {
        entry:entry, // 设置入口文件路径
        output: {
            //filename: 'bundle.js', // 输出文件名称
    		//filename: '[name]-[contenthash].js',
    		filename: './js/[name].[hash:6].js',
            path: path.resolve(__dirname, 'dist') // 输出文件存放位置
        },
    	module: {
    	        rules: [{
    	            test: /\.html$/,
    	            use: 'html-loader'
    	        },
                {
                    test: /\.(js|jsx)$/,
                    exclude: /node_modules/,
                    use: ["babel-loader"],
    				generator: { // 生成文件名字 - 定义规则
    				  filename: 'js/[name].[hash:6][ext]' // [ext]会替换成.eot/.woff
    				}
                },
    			{
    				test: /\.css$/,
    				use:[MiniCssExtractPlugin.loader,'css-loader']
    			},
    			{
                test: /\.(png|jpg|gif|jpeg)$/i,   // 匹配图片文件
                type: "asset",    // 在导出一个 data URI 和一个单独的文件之间自动选择
                generator: { // 生成文件名字 - 定义规则
                    filename: 'imgs/[name].[hash:6][ext]' // [ext]会替换成.eot/.woff
    				}
    			},
    			{
    			  test:/\.(ttf|eot|svg)$/,
    			  generator: { // 生成文件名字 - 定义规则
                    filename: 'fonts/[name].[hash:6][ext]' // [ext]会替换成.eot/.woff
    			  }
    			},
    			],
    	},
    	plugins:plugins,
    	
    };
  • 9
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
可以使用 webpack打包多个 HTML 页面。以下是一种常见的配置方法: 1. 首先,安装必要的 webpack 插件: ``` npm install html-webpack-plugin --save-dev ``` 2. 在 webpack.config.js 文件中配置多个页面: ```javascript const HtmlWebpackPlugin = require('html-webpack-plugin'); module.exports = { entry: { page1: './src/page1.js', page2: './src/page2.js', }, output: { filename: '[name].bundle.js', path: path.resolve(__dirname, 'dist'), }, plugins: [ new HtmlWebpackPlugin({ filename: 'page1.html', template: './src/page1.html', chunks: ['page1'], }), new HtmlWebpackPlugin({ filename: 'page2.html', template: './src/page2.html', chunks: ['page2'], }), ], }; ``` 在上述示例中,我们配置了两个入口文件(page1.js 和 page2.js),分别对应两个 HTML 页面(page1.html 和 page2.html)。每个 HtmlWebpackPlugin 实例都指定了生成的 HTML 文件名称、模板文件路径以及关联的入口文件。 3. 创建对应的 HTML 模板文件: 在 src 目录下创建 page1.html 和 page2.html 文件,可以在这里编写对应页面HTML 结构。 4. 运行打包命令: ``` npx webpack ``` 运行以上命令后,webpack 将会根据配置生成多个 HTML 文件,并将对应的 JavaScript 文件注入到相应的 HTML 页面中。最终打包好的文件将存储在 dist 目录下。 这样,你就可以通过配置多个 HtmlWebpackPlugin 实例来打包多个 HTML 页面。每个 HTML 页面可以关联不同的入口文件,实现灵活的页面打包配置。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值