この記事では、webpack による HTML ファイルの処理について説明します。手順は非常に詳細なので、必要な方は参考にしてください。
HTML ファイルを処理する理由
すべてのメソッドは dist ファイル フォルダーと html にパッケージ化されています。これらの dist フォルダー内の js を src 経由で 1 つずつ手動でインポートすると、信頼性が低すぎるため、解決策は次のとおりです:
webpack.config.js
configurationshtmlwebpackpluginの構成項目は次のとおりです。
{String}webpack.config.js
配置
其中HtmlWebpackPlugin的配置项有:
Name | 类型 | Description |
---|---|---|
title | {String} | 用于生成的HTML文档的标题 |
filename | {String} | 要生成HTML的文件。可以指定目录 |
template | {String} | 依据的模板文件 |
inject | {Boolean|String} | 将js资源注入到页面哪个部位,值有:true ‘head’ ‘body’ false,当传递true或’body’所有JavaScript资源将被放置在正文元素的底部。’head’将脚本放置在head元素中 |
favicon | {String} | 将给定的图标路径添加到输出HTML |
hash | {Boolean} | 如果true将webpack所有包含的脚本和CSS文件附加一个独特的编译哈希。这对缓存清除非常有用 |
chunks | {?} | 放入你需要引入的资源模块 |
excludeChunks | {?} | 不放入你某些资源模块 |
预期目标: 我的项目是一个多入口文件的项目,希望每一个入口页面引入对应的js模块和css
比如login页面引入login的js和css、index引入对应js和css
webpack.config.js
配置如下:
npm install --save-dev extract-text-webpack-plugin
然后打包结果如下
其中生成的目标文件:
为什么去处理html文件
我们所有的方法都打包到了dist的文件夹下面,而我们的html是在自己定义的文件夹下面,如果自己手动再去一个一个src引入这些dist文件夹下的js,那么也有些太不靠谱了
所以解决办法是:
第一步:下载
const path = require('path');const webpack = require('webpack')const ExtractTextPlugin = require("extract-text-webpack-plugin");const HtmlWebpackPlugin = require('html-webpack-plugin');const configs = { entry:{ 'commom':['./src/page/common/index.js'], 'index':['./src/page/index/index.js'], 'login':['./src/page/login/index.js'] }, output:{ path:path.resolve(__dirname, 'dist'), filename:'js/[name].js' }, module:{ rules:[ { test:/\.css$/, use:ExtractTextPlugin.extract({ fallback: "style-loader", use: "css-loader" }) } ] }, plugins:[ //独立通用模块 new webpack.optimize.CommonsChunkPlugin({ name : 'common', filename : 'js/base.js' }), //独立打包css new ExtractTextPlugin('css/[name].css'), //对html模板进行处理,生成对应的html,引入需要的资源模块 new HtmlWebpackPlugin({ template:'./src/view/index.html',//模板文件 filename:'view/login/index.html',//目标文件 chunks:['commom','login'],//对应加载的资源 inject:true,//资源加入到底部 hash:true//加入版本号 }) ] } module.exports= configs
第二步:webpack.config.js
{String} | HTML ファイルを生成します。ディレクトリ | |
---|---|---|
inject | ||
に基づいてテンプレート ファイルを指定できます。ページのどの部分に js リソースを挿入します。値は次のとおりです。 true 'head' ' body' false、true または 'body' を渡すと、すべての JavaScript リソースが body 要素の下部に配置されます。 'head' はスクリプトを head 要素に配置します | favicon | |
指定されたアイコンのパスを出力 HTML に追加します | hash | |
true の場合、Webpack にはすべてスクリプトが含まれますCSS ファイルには、一意のコンパイル ハッシュが追加されます。これはキャッシュのクリアに非常に便利です | chunks | |
インポートする必要があるリソースモジュールを入れてください | excludeChunks | |
一部のリソースモジュールは入れないでください | | 期待される目標: 私のプロジェクトは複数のエントリ ファイルを含むプロジェクトです。各エントリ ページに対応する js モジュールと css が導入されることを願っています |
webpack.config.js は次のように構成されています: | すると、パッケージ化の結果は次のようになります | 生成されるターゲット ファイル: |
HTML ファイルを処理する理由 | すべてのメソッドは dist フォルダーの下にパッケージ化されており、私たちの html は定義したフォルダーの下にあります。これらの dist フォルダー内の js を src 経由で 1 つずつ手動でインポートすると、少し信頼性が低くなります
const path = require('path');const webpack = require('webpack')const ExtractTextPlugin = require("extract-text-webpack-plugin");const HtmlWebpackPlugin = require('html-webpack-plugin');const configs = { entry:{ 'commom':['./src/page/common/index.js'], 'index':['./src/page/index/index.js'], 'login':['./src/page/login/index.js'] }, output:{ path:path.resolve(__dirname, 'dist'), filename:'js/[name].js' }, module:{ rules:[ { test:/\.css$/, use:ExtractTextPlugin.extract({ fallback: "style-loader", use: "css-loader" }) } ] }, plugins:[ //独立通用模块 new webpack.optimize.CommonsChunkPlugin({ name : 'common', filename : 'js/base.js' }), //独立打包css new ExtractTextPlugin('css/[name].css'), //对html模板进行处理,生成对应的html,引入需要的资源模块 new HtmlWebpackPlugin({ template:'./src/view/index.html',//模板文件 filename:'view/login/index.html',//目标文件 chunks:['commom','login'],//对应加载的资源 inject:true,//资源加入到底部 hash:true//加入版本号 }) ] } module.exports= configs
webpack.config.js
設定🎜🎜 HtmlWebpackPlugin の設定項目は次のとおりです: 🎜🎜🎜🎜 🎜名前🎜🎜タイプ🎜🎜説明🎜🎜🎜🎜🎜🎜title🎜🎜{String}🎜🎜生成されたHTMLドキュメントのタイトル🎜🎜🎜🎜filename🎜🎜{String}🎜🎜HTMLを生成するファイル。ディレクトリ 🎜🎜🎜🎜template🎜🎜{String}🎜🎜🎜🎜🎜🎜inject🎜🎜{Boolean|String}🎜🎜に基づいてテンプレート ファイルを指定できます。ページのどの部分に js リソースを挿入します。値は次のとおりです。 true 'head' ' body' false、true または 'body' を渡すと、すべての JavaScript リソースが body 要素の下部に配置されます。 'head' はスクリプトを head 要素に配置します 🎜🎜🎜🎜favicon🎜🎜{String}🎜🎜 指定されたアイコンのパスを出力 HTML に追加します🎜🎜🎜🎜hash🎜🎜{Boolean}🎜🎜 true の場合、Webpack にはすべてスクリプトが含まれますCSS ファイルには、一意のコンパイル ハッシュが追加されます。これはキャッシュのクリアに非常に便利です🎜🎜🎜🎜chunks🎜🎜{?}🎜🎜インポートする必要があるリソースモジュールを入れてください🎜🎜🎜🎜excludeChunks🎜🎜{?}🎜🎜一部のリソースモジュールは入れないでください🎜 🎜🎜🎜预期目标: 我的项目是一个多入口文件的项目,希望每一个入口页面引入对应的js模块和css
比如login页面引入login的js和css、index引入对应js和css
webpack.config.js
配置如下:
const path = require('path');const webpack = require('webpack')const ExtractTextPlugin = require("extract-text-webpack-plugin");const HtmlWebpackPlugin = require('html-webpack-plugin');const configs = { entry:{ 'commom':['./src/page/common/index.js'], 'index':['./src/page/index/index.js'], 'login':['./src/page/login/index.js'] }, output:{ path:path.resolve(__dirname, 'dist'), filename:'js/[name].js' }, module:{ rules:[ { test:/\.css$/, use:ExtractTextPlugin.extract({ fallback: "style-loader", use: "css-loader" }) } ] }, plugins:[ //独立通用模块 new webpack.optimize.CommonsChunkPlugin({ name : 'common', filename : 'js/base.js' }), //独立打包css new ExtractTextPlugin('css/[name].css'), //对html模板进行处理,生成对应的html,引入需要的资源模块 new HtmlWebpackPlugin({ template:'./src/view/index.html',//模板文件 filename:'view/login/index.html',//目标文件 chunks:['commom','login'],//对应加载的资源 inject:true,//资源加入到底部 hash:true//加入版本号 }) ] } module.exports= configs
然后打包结果如下
其中生成的目标文件:
相关推荐:
以上がHTMLファイルのWebpack処理の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。