webpack4 四、输出文件管理

输出文件管理

html文件需要引用js依赖,如果chunck name是根据[name]、[id]、[hash]、[chunkhash]自动生成的,每次依赖的文件名,可能不一致。使用插件自动生成index文件,并为我们管理输出文件

1.index.html的生成

方案一、根据模板自动生成index.html

 plugins: [
        //自动生成index.html文件、、、、、
        new HtmlWebpackPlugin({
            template: 'index.html',//以什么为模板文件,在模板文件下新增js依赖
            inject: 'head',//body 将脚本放入head还是body里
        }),
        //该插件会根据output路径自动识别输出文件,并删除历史文件,只保留最新构建
        new CleanWebpackPlugin(),

    ],

方案二、配合npm脚本

<%=htmlWebpackPlugin.options.title%>

<% %>js代码

<%= %>输出值

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>模板</title>
</head>
<body>
<%=htmlWebpackPlugin.options.title%>
</body>
</html>

2.html文件压缩

上面插件还可对html文件进行压缩,

例如去掉空格,,去掉注释等

3.将js文件与html文件分离开

设置输出文件路径,将html与其他文件分隔开

  output: {
        //文件名必须是动态生成的,不然会文件名冲突
        filename: 'js/[name].bundle.js',
        //会根据输出路径自动创建新的文件夹,HtmlWebpackPlugin,CleanWebpackPlugin俩插件会根据输出路径自动选择相应文件进行构建
        path: path.resolve(__dirname, 'dist1')
    },

3.完整配置如下

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


module.exports = {
    entry: {
        app: './src/index.js',
        print: './src/print.js'
    },
    plugins: [
        //自动生成index.html文件、、、、、
        new HtmlWebpackPlugin({
            template: 'index.html',//以什么为模板文件,在模板文件下新增js依赖
            inject: 'head',//body将生成的文件
        }),
        //该插件会根据output路径自动识别输出文件,并删除历史文件,只保留最新构建
        new CleanWebpackPlugin(),

    ],
    output: {
        //文件名必须是动态生成的,不然会文件名冲突
        filename: 'js/[name].bundle.js',
        //会根据输出路径自动创建新的文件夹,HtmlWebpackPlugin,CleanWebpackPlugin俩插件会根据输出路径自动选择相应文件进行构建
        path: path.resolve(__dirname, 'dist1')
    },
}
;

4.结果

1.自动生成的文件目录结构

![image-20190328003737084](/Users/ocean/Library/Application Support/typora-user-images/image-20190328003737084.png)

2.生成的html

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>模板</title>
    <script type="text/javascript" src="js/app.bundle.js"></script>
    <script type="text/javascript" src="js/print.bundle.js"></script>
</head>
<body>
</body>
</html>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值