一、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. x64汇编第二讲,复习x86汇编指令格式,学习x64指令格式

    目录 x64汇编第二讲,复习x86汇编指令格式,学习x64指令格式 一丶x86指令复习. 1.1什么是x86指令. 1.2 x86与x64下的通用寄存器 1.3 OpCode 1.4 7种寻址方式 二 ...

  2. nginx 访问控制之 user_agent

    user_agent大家并不陌生,可以简单理解成浏览器标识,包括一些蜘蛛爬虫都可以通过user_agent来辨识. 通过访问日志,可以发现一些搜索引擎的蜘蛛对网站访问特别频繁,它们并不友好. 为了减少 ...

  3. 分析WordPress数据表之评论表(功能篇)

    数据表分析 wp_comments(评论表) 该表字段,如下:comment_ID(评论ID)comment_post_ID(评论文章ID)comment_author(评论者用户名)comment_ ...

  4. 表格样式、表格css、

    .mytab{ border-collapse: collapse;}.mytab tr,.mytab td,.mytab th{ text-align: center; border: 1px so ...

  5. BIND配置

    一,简介 相对于存储和大数据领域,CDN是一个相对小的领域,但行行出状元,BIND就是CDN领域的蝉联N届的状元郎.BIND是一款非常常用的DNS开源服务器,全球有90%的DNS用BIND实现.值得一 ...

  6. 转:goproxy和go modules的初步使用

    转:https://blog.csdn.net/qq_42403866/article/details/93654421 go module 管理比较方便. 启用: export GO111MODUL ...

  7. (转) centos7 RPM包之rpm命令

    原文:https://blog.csdn.net/capecape/article/details/78529159 RPM包与源码包的区别1.软件包分类 源码包:C源代码包 rpm包:编译之后的二进 ...

  8. 两个字符串对比提升比较性能用 StringComparison.OrdinalIgnoreCase

    如果用string.ToLower() 或者 string.ToUpper()字符串在进行大小写转换时会消耗额外的性能 用这个比较性能更好 StringPwd1.Equals(Md5(PassWord ...

  9. /bin/sh^M:解释器错误:没有那个文件或目录

    在win下编辑的时候,换行结尾是\n\r , 而在linux下 是\n,所以才会有 多出来的\rsed -i 's/\r$//' configure 删除configure脚本中的\r

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

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