博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
webpack 打包出多个HTML文件,多个js文件,图片文件放置到指定文件夹中
阅读量:5297 次
发布时间:2019-06-14

本文共 6478 字,大约阅读时间需要 21 分钟。

 

一、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代码

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完整代码

 

转载于:https://www.cnblogs.com/nangezi/p/11134917.html

你可能感兴趣的文章
【SAP业务模式】之ICS(六):发票输出类型
查看>>
powerdesigner从EXCEL读入数据
查看>>
UOJ #131 【NOI2015】 品酒大会
查看>>
CNN的学习笔记
查看>>
【论文学习】YOLO9000: Better,Faster,Stronger(YOLO9000:更好,更快,更强)
查看>>
全文索引FULLTEXT 的使用
查看>>
代码折叠
查看>>
Ubuntu通过apt-get安装指定版本和查询指定软件有多少个版本
查看>>
Ubuntu 16.04安装Ubuntu After Install工具实现常用软件批量安装
查看>>
CentOS Ubantu linux中设置history历史命令显示命令执行时间
查看>>
Android背景渐变色(shape,gradient)
查看>>
设计模式之装饰者模式
查看>>
知乎爬虫之3:请求分析(附赠之前爬取的数据一份)
查看>>
bzoj4896 补退选
查看>>
sql中char、nchar、varchar和nvarchar的区别
查看>>
JAVA中方法参数传递问题
查看>>
BZOJ 1618: [Usaco2008 Nov]Buying Hay 购买干草( dp )
查看>>
Baby_gin
查看>>
学习笔记 第六周 第二篇
查看>>
流迭代器 + 算法灵活控制IO流
查看>>