一、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. 第02组 Alpha冲刺(1/4)

    队名:十一个憨批 组长博客 作业博客 组长黄智 过去两天完成的任务:进行组员分工 GitHub签入记录 接下来的计划:构思游戏实现 还剩下哪些任务:敲代码 燃尽图 遇到的困难:任务分配的不及时,导致很 ...

  2. 一篇文章把你带入到JavaScript中的闭包与高级函数

    在JavaScript中,函数是一等公民.JavaScript是一门面向对象的编程语言,但是同时也有很多函数式编程的特性,如Lambda表达式,闭包,高阶函数等,函数式编程时一种编程范式. funct ...

  3. nginx之rewrite相关功能

    Nginx Rewrite相关功能 Nginx服务器利用ngx_http_rewrite_module 模块解析和处理rewrite请求,此功能依靠 PCRE(perl compatible regu ...

  4. python 启动pydoc查看文档

    启动pydoc查看文档 python3 -m pydoc -p 访问http://localhost:6789 或者查看官方文档:https://seleniumhq.github.io/seleni ...

  5. Centos7 Nginx安装使用

    一.Nginx简介 1.什么是nginx Nginx是一款使用C语言开发的高性能的http 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器.由俄罗斯的程序设计师Igor Sysoev ...

  6. 投稿SCI杂志 | 如何撰写cover letter | 如何绘制illustrated abstract

    现在大部分学术期刊杂志都要求提供这两样东西. 一个是面向editor的文章和研究的高度总结:一个是面向读者的高度总结,一图胜千言. 如何制作动画摘要呢? 收集素材,大部分内容在PPT里就能完成. 如何 ...

  7. win10系统优化方法及chkdsk工具使用

    发现安装了测试版的Win10真的很慢!其实Win10在每次升级后,的确会比老版慢上很多,这只要是因为新增加的安全功能,往往会对系统速度造成拖累.但有很多方法都可以让你的系统运行如飞. http://b ...

  8. [python]pypy优化python性能

    下载地址:https://pypy.org/download.html # python2.7版本 yum install pypy # python3.6版本https://bitbucket.or ...

  9. easyui datagrid的行编辑器editor 如何实现新增时可修改,编辑时,不可修改

    项目出现一个需求,要求用户界面的用户名,新增时,可自由输入,编辑时,不可修改 html页面 <table id="gridlist" data-bind="data ...

  10. Spring boot与Spring cloud之间的关系

    Spring boot 是 Spring 的一套快速配置脚手架,可以基于spring boot 快速开发单个微服务,Spring Boot,看名字就知道是Spring的引导,就是用于启动Spring的 ...