webpack打包多个html,webpack 打包出多个HTML文件,多个js文件,图片文件放置到指定文件夹中...

一、webpack.config.js简单代码

const HtmlWebpackPlugin = require('html-webpack-plugin');

module.exports={//mode 指打包模式

//development 指开发模式,代码未压缩

//production 指产品模式,代码压缩

mode: 'development', //development and production

//entry 指明入口文件,webpack 会从这个文件开始连接所有的依赖。

entry: {'./js/first': __dirname + '/src/first.js','./js/second': __dirname + '/src/second.js',

},//output 指明出口文件, 即打包后的文件存放的位置

output: {

path: __dirname+ '/dist',

filename:'[name]_bundle_[hash].js',

},//文件加载器 loader

//loader 让 webpack 能够去处理那些非 JavaScript 文件(webpack 自身只理解 JavaScript)

module: {

rules: [

...

]

},//本地服务器配置

devServer: {

contentBase:'./dist', //默认本地服务器所在的根目录

historyApiFallback: true, //是否跳转到index.html

inline: true, //源文件改变时刷新页面

port: 8084 //端口号,默认8080

},//插件

plugins: [

...

]

}

二、webpack.config.js各个模块的介绍

1. mode 介绍

module.exports ={

mode:'production' //或者 development

};

解释: 通过选择 development 或 production 之中的一个,来设置 mode 参数,你可以启用相应模式下的 webpack 内置的优化

development  表示 开发模式,代码不会压缩(有利于断点调试)

production 表示 产品模式, 代码会进行压缩(不利于断点调试)

2. devServer介绍

module.exports ={//本地服务器配置

devServer: {

contentBase:'./dist', //默认本地服务器所在的根目录

historyApiFallback: true, //是否跳转到index.html

inline: true, //源文件改变时刷新页面

port: 8084 //端口号,默认8080

},

}

解释: webpack-dev-server 可以开启本地服务器,便于开发

3. module介绍

//loader设置

module: {

rules: [

{

test:/\.(css|sass|scss)$/,

loaders: ['style-loader', 'css-loader']

},

{

test:/\.(jsx|js)$/,

use: [{

loader:'babel-loader',

options: {

presets: ['env', 'react', 'stage-0']

}

}]

},

{

test:/\.xml$/,

loaders: ['xml-loader']

},

{

test:/\.(png|svg|jpg|gif|mp4)$/,

use: [{

loader:'file-loader',

options: {

outputPath:'./img',

publicPath:'./img'}

}]

}

]

},

介绍: module.loaders 允许在 webpack 配置中指定多个 loader

例如: babel-loader、style-loader、css-loader、sass-loader、file-loader等,这些都需要先npm install

那么如何在打包时,将图片文件放置到指定文件夹中呢?

options: {

outputPath:'./img', //指定放置目标文件的文件系统路径

publicPath: './img' //指定目标文件的自定义公共路径

}

通过设置 outputPath 可以使得打包后的文件放置到指定的文件夹中(./img)

4. plugins

plugins: [new HtmlWebpackPlugin({ //输出html文件1

title: '123', //生成html文件的标题

favicon: './favicon.png', //生成html文件的favicon的路径

filename: 'first.html', //生成html文件的文件名,默认是index.html

template: 'first.html', //本地html文件模板的地址

hash: true,

chunks: ['./js/first']

}),new HtmlWebpackPlugin({ //输出html文件2

title: '123',

favicon:'./favicon.png',

filename:'second.html',

template:'second.html',

hash:true,

chunks: ['./js/second']

})

]

hash:true|false,是否为所有注入的静态资源添加webpack每次编译产生的唯一hash值,添加hash形式如下所示:

chunks:允许插入到模板中的一些chunk,不配置此项默认会将entry中所有的thunk注入到模板中。在配置多个页面时,每个页面注入的thunk应该是不相同的,需要通过该配置为不同页面注入不同的thunk;

此处的chunks和 前面的 entry 入口文件 对应

entry: {

'./js/first': __dirname + '/src/first.js',

'./js/second': __dirname + '/src/second.js',

},

5. output

//output 指明出口文件, 即打包后的文件存放的位置

output: {

path: __dirname+ '/dist',

filename:'[name]_bundle_[hash].js',

},

介绍: output 模块指明 项目打包的出口文件

path:表示出口文件的路径

filename:表示出口js文件的命名,此处的[name]对应 entry入口文件的名称,[hash]在每次编译时产生唯一的hash值

6. entry

//entry 指明入口文件,webpack 会从这个文件开始连接所有的依赖。

entry: {'./js/first': __dirname + '/src/first.js','./js/second': __dirname + '/src/second.js',

},

介绍: entry 模块 指明 项目的入口js文件, 可以有多个

'./js/first' : 是指 文件打包后的路径(放置在js文件夹中),和 output 模块中的[name] 以及HtmlWebpackPlugin 插件 中的 chunk 对应

三、最后,完整webpack.config.js代码

1c50b20dad1cfcdcd4637c31e175ef39873.jpg

883c429b112e26d4c532ce44bab98c22868.jpg

const HtmlWebpackPlugin = require('html-webpack-plugin');

module.exports={//模式设置

mode: 'development', //development and production

//入口设置

//使用babel-polyfill 可以兼容低版本浏览器(不支持es6)

entry: {'./js/first': ['babel-polyfill', __dirname + '/src/first.js'],'./js/second': ['babel-polyfill', __dirname + '/src/second.js'],

},//出口设置

output: {

path: __dirname+ '/dist',

filename:'[name]_bundle_[hash].js',

},//loader设置

module: {

rules: [

{

test:/\.(css|sass|scss)$/,

loaders: ['style-loader', 'css-loader']

},

{

test:/\.(jsx|js)$/,

use: [{

loader:'babel-loader',

options: {

presets: ['env', 'react', 'stage-0']

}

}]

},

{

test:/\.xml$/,

loaders: ['xml-loader']

},

{

test:/\.(png|svg|jpg|gif|mp4)$/,

use: [{

loader:'file-loader',

options: {

outputPath:'./img',

publicPath:'./img'}

}]

}

]

},//本地服务器 webpack-dev-server插件,开发中server,便于开发,可以热加载

devServer: {

contentBase:'./dist', //默认本地服务器所在的根目录

historyApiFallback: true, //是否跳转到index.html

inline: true, //源文件改变时刷新页面

port: 8084 //端口号,默认8080

},//插件设置

//HtmlWebpackPlugin 可以在开发中按照模板生成 html文件

plugins: [new HtmlWebpackPlugin({ //输出html文件1

title: '123', //生成html文件的标题

favicon: './favicon.png', //生成html文件的favicon的路径

filename: 'first.html', //生成html文件的文件名,默认是index.html

template: 'first.html', //本地html文件模板的地址

hash: true,

chunks: ['./js/first']

}),new HtmlWebpackPlugin({ //输出html文件2

title: '123',

favicon:'./favicon.png',

filename:'second.html',

template:'second.html',

hash:true,

chunks: ['./js/second']

})

]

}

webpack.config.js完整代码

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以使用 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 页面可以关联不同的入口文件,实现灵活的页面打包配置。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值