HTMLファイルのWebpack処理

不言
リリース: 2018-05-28 17:45:36
オリジナル
2675 人が閲覧しました

この記事では、webpack による HTML ファイルの処理について説明します。手順は非常に詳細なので、必要な方は参考にしてください。

  • HTML ファイルを処理する理由
    すべてのメソッドは dist ファイル フォルダーと html にパッケージ化されています。これらの dist フォルダー内の js を src 経由で 1 つずつ手動でインポートすると、信頼性が低すぎるため、解決策は次のとおりです:

  • Webpack プラグインを使用します: HtmlWebpackPlugin

STEP 1:ダウンロード

    rreee
  • step2: webpack.config.js configurationshtmlwebpackpluginの構成項目は次のとおりです。

  • title

{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ファイルのWebpack処理

其中生成的目标文件:
HTMLファイルのWebpack処理

  • 为什么去处理html文件
    我们所有的方法都打包到了dist的文件夹下面,而我们的html是在自己定义的文件夹下面,如果自己手动再去一个一个src引入这些dist文件夹下的js,那么也有些太不靠谱了

所以解决办法是:

使用webpack插件:HtmlWebpackPlugin

  • 第一步:下载

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

生成された HTML ドキュメントのタイトル

filenametemplate{String}{Boolean|String}{String}{Boolean}{?}{?} 期待される目標: 私のプロジェクトは複数のエントリ ファイルを含むプロジェクトです。各エントリ ページに対応する js モジュールと css が導入されることを願っています たとえば、ログイン ページにはログイン js と css が導入されます。インデックスには対応する js と css が導入されます
npm install --save-dev extract-text-webpack-plugin
ログイン後にコピー
HTMLファイルのWebpack処理生成されるターゲット ファイル: HTMLファイルのWebpack処理すべてのメソッドは dist フォルダーの下にパッケージ化されており、私たちの html は定義したフォルダーの下にあります。これらの dist フォルダー内の js を src 経由で 1 つずつ手動でインポートすると、少し信頼性が低くなります したがって、解決策は次のとおりです:
{String} HTML ファイルを生成します。ディレクトリ
inject
に基づいてテンプレート ファイルを指定できます。ページのどの部分に js リソースを挿入します。値は次のとおりです。 true 'head' ' body' false、true または 'body' を渡すと、すべての JavaScript リソースが body 要素の下部に配置されます。 'head' はスクリプトを head 要素に配置します favicon
指定されたアイコンのパスを出力 HTML に追加しますhash
true の場合、Webpack にはすべてスクリプトが含まれますCSS ファイルには、一意のコンパイル ハッシュが追加されます。これはキャッシュのクリアに非常に便利ですchunks
インポートする必要があるリソースモジュールを入れてくださいexcludeChunks
一部のリソースモジュールは入れないでください
webpack.config.js は次のように構成されています: すると、パッケージ化の結果は次のようになります
HTML ファイルを処理する理由
🎜 Webpack プラグインを使用します: HtmlWebpackPlugin🎜 🎜🎜🎜ステップ 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
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
🎜ステップ 2: 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処理

其中生成的目标文件:
HTMLファイルのWebpack処理

相关推荐:

在webpack中使用ECharts详解

Node.js、jade生成静态html文件实例

webpack的插件详解

以上がHTMLファイルのWebpack処理の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート