一、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 插件的 部分功能

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

详细请查找 https://www.webpackjs.com/configuration/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形式如下所示:

    <script type="text/javascript" src="common.js?a3e1396b501cdd9041be"></script>
  • 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完整代码

webpack 打包出多个HTML文件,多个js文件,图片文件放置到指定文件夹中的更多相关文章

  1. 【COCOS2DX-LUA 脚本开发之十二】Hybrid模式-利用AssetsManager实现在线更新脚本文件lua、js、图片等资源(免去平台审核周期)

    本站文章均为李华明Himi原创,转载务必在明显处注明:(作者新浪微博:@李华明Himi) 转载自[黑米GameDev街区] 原文链接: http://www.himigame.com/iphone-c ...

  2. Java Servlet图片上传至指定文件夹并显示图片

    在学习Servlet过程中,针对图片上传做了一个Demo,实现的功能是:在a页面上传图片,点击提交后,将图片保存到服务器指定路径(D:/image):跳转到b页面,b页面读取展示绝对路径(D:/ima ...

  3. 利用AssetsManager实现在线更新脚本文件lua、js、图片等资源(免去平台审核周期)

    转自:http://www.himigame.com/iphone-cocos2dx/1354.html 首先说明一个问题: 为什么要在线更新资源和脚本文件!? 对于此问题,那要说的太多了,简单概括, ...

  4. Python 判断文件是否存在,不存在则将名称写入指定文件

    import os filename = '15464657761111111.pdf' pathDir = 'F:/tqcs/sr' # 判断文件是否存在 if os.path.exists(pat ...

  5. 3、webpack打包出的文件解析

    分析打包后的结果,看看打包后的结果是什么东西 把打包后的结果.注释什么的删删‘’ 当前是一个匿名函数. 默认的时候会执行,执行的时候会传一个对象,对象有几部分,第一部分是我们的key.第二部分是我们的 ...

  6. Java Struts图片上传至指定文件夹并显示图片

    继上一次利用Servlet实现图片上传,这次利用基于MVC的Struts框架,封装了Servlet并简化了JSP页面跳转. JSP上传页面 上传一定要为form加上enctype="mult ...

  7. delphi获取文件的创建/修改时间、按时间删除指定文件下的文件

    uses   Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,   Dialogs, StdCtrl ...

  8. 性能优化 - 查看 webpack 打包后所有的依赖关系(webpack 可视化工具)

    查看 webpack 打包后所有组件与组件间的依赖关系,针对多余的包文件过大, 剔除首次影响加载的效率问题进行剔除修改,本次采用的是 ==webpack-bundle-analyzer(可视化视图查看 ...

  9. 解决webpack因新版本打包失败问题--ERROR in multi ./src/main.js ./dist/bundle.js

    最近在学习webpack打包过程中遇到的一个问题向大家分享下! 创建了一个webpacksty的目录,目录下放着dist,src子目录,然后通过node环境下,npm init -y 初始化项目出现p ...

随机推荐

  1. exception The absolute uri: [http://java.sun.com/jsp/jstl/core] cannot be resolved in either web.xml or the jar files deployed with this application

        1.情景展示 eclipse,运行web项目时,报错信息如下: The absolute uri: [http://java.sun.com/jsp/jstl/core] cannot be ...

  2. leetcode: 最长上升子序列

    题目描述: 给定一个无序的整数数组,找到其中最长上升子序列的长度. 示例: 输入: [10,9,2,5,3,7,101,18]输出: 4 解释: 最长的上升子序列是 [2,3,7,101],它的长度是 ...

  3. Spring中为什么继承了ApplicationContextAware接口就可以使用ApplicationContext对象?

    1.Spring中使用applicationContext对象 public class SpringContextUtil implements ApplicationContextAware { ...

  4. Centos 7.x卸载ibus黑屏修复及fcitx搜狗拼音安装方法

    ibus黑屏修复 百度出来的fcitx安装方法,都要卸载ibus,如果没有注意同时卸载掉的依赖包的话,gnome桌面中的一些关键库也没被卸载. 修复方法很简单,重新安装Gnome sudo yum - ...

  5. sharding jdbc(sphere) 3.1.0 spring boot配置

    sharding jdbc 2.x系列详解参见https://www.cnblogs.com/zhjh256/p/9221634.html. 最近将sharding jdbc的配置从xml切换到了sp ...

  6. electron---更改安装图标

    在用electron开发桌面端的时候,打包成exe文件,需要更改默认的图标: 具体做法: 在根目录新建新建存放icon图标的目录: 需要两个icon:icon.icns,icon.ico 注意: 1. ...

  7. nsqphp源码分析(一)

    一.目录结构 二.

  8. Java:JSON和Map相互转换

    Java:JSON与Map相互转换 需要jar包:jackson-core-2.6.0.jar,jackson-databind-2.6.0.jar,jackson-annotations-2.6.0 ...

  9. Java13新特性 -- switch表达式动态CDS档案(动态类数据共享归档)

    支持在Java application执行之后进行动态archive.存档类将包括默认的基础层CDS存档中不存在的所有已加载的应用程序和库类.也就是说,在Java 13中再使用AppCDS的时候,就不 ...

  10. (原)关于OpenGL中的几个坐标系统的理解

    在我们使用opengl做图像处理的过程中,其中必不可少的基本都会用到顶点着色器和片元着色器. 完整的渲染管线图: 那么在这两个着色器程序中,我们需要绘制我们的图像的时候,他们的坐标和位置对应关系是如何 ...