>  기사  >  웹 프론트엔드  >  HTML 파일의 Webpack 처리

HTML 파일의 Webpack 처리

不言
不言원래의
2018-05-28 17:45:362611검색

이 문서에서는 webpack의 html 파일 처리에 대해 설명합니다. 필요한 친구는 이를 참조할 수 있습니다.

  • html 파일을 처리하는 이유
    우리의 모든 방법은 dist 파일 폴더에 패키지되어 있으며, html 는 우리가 정의한 폴더 아래에 있습니다. src를 통해 이러한 dist 폴더의 js를 하나씩 수동으로 가져오면 너무 신뢰할 수 없습니다

그래서 해결책은 다음과 같습니다.

웹팩 플러그인 사용: HtmlWebpackPlugin

  • Step 1 : 다운로드

npm install --save-dev extract-text-webpack-plugin

step 2 : webpack.config.js configuration htmlwebpackplugin의 구성 항목은 다음과 같습니다. 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配置如下:

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 처리

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

所以解决办法是:

使用webpack插件:HtmlWebpackPlugin

  • 第一步:下载

npm install --save-dev extract-text-webpack-plugin

第二步:webpack.config.js

title

{String}생성된 HTML 문서의 제목filename{String}HTML 파일을 생성합니다. template{String}inject{Boolean|String}페이지의 어느 부분에 js 리소스를 삽입할지에 따라 템플릿 파일을 지정할 수 있습니다. 값은 다음과 같습니다. true 'head' ' body' false, true 또는 'body'를 전달하면 모든 JavaScript 리소스가 body 요소의 맨 아래에 배치됩니다. 'head'는 스크립트를 헤드 요소에 배치합니다. favicon{String}주어진 아이콘 경로를 출력 HTMLhash{Boolean}에 추가합니다. true이면 webpack에 스크립트가 모두 포함됩니다. 및 CSS 파일에는 고유한 컴파일 해시가 추가됩니다. 이는 캐시 삭제에 매우 유용합니다chunks{?}가져와야 하는 리소스 모듈을 넣으세요excludeChunks{?}일부 리소스 모듈은 넣지 마세요
예를 들어 로그인 페이지에는 로그인 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 파일을 처리하는 이유
예상 목표: 내 프로젝트는 여러 항목 파일이 있는 프로젝트입니다. 각 항목 페이지에 해당 js 모듈과 css가 소개되기를 바랍니다.
여기에 그림 설명 쓰기 생성된 대상 파일:
모든 방법 dist 폴더 아래에 패키지되어 있고 우리 HTML은 정의한 폴더 아래에 있습니다. src를 통해 이러한 dist 폴더의 js를 하나씩 수동으로 가져오면 약간 신뢰할 수 없게 됩니다🎜🎜🎜🎜그래서 해결책은 다음과 같습니다.🎜🎜 웹팩 플러그인 사용: HtmlWebpackPlugin🎜 🎜🎜🎜1단계: 다운로드🎜🎜🎜rrreee🎜2단계: webpack.config.jsConfiguration🎜🎜HtmlWebpackPlugin의 구성 항목은 다음과 같습니다. 🎜🎜🎜🎜 🎜Name🎜🎜Type🎜🎜 Description🎜🎜🎜🎜🎜🎜title🎜🎜{String}🎜🎜생성된 HTML 문서의 제목🎜🎜🎜🎜filename🎜🎜{String}🎜🎜HTML을 생성하는 파일입니다. 🎜🎜🎜🎜template🎜🎜{String}🎜🎜🎜🎜🎜🎜inject🎜🎜{Boolean|String}🎜🎜페이지의 어느 부분에 js 리소스를 삽입할지에 따라 템플릿 파일을 지정할 수 있습니다. 값은 다음과 같습니다. true 'head' ' body' false, true 또는 'body'를 전달하면 모든 JavaScript 리소스가 body 요소의 맨 아래에 배치됩니다. '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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.