Maison > Article > interface Web > Comment utiliser le plug-in Installation dans des projets pratiques
Cette fois, je vais vous montrer comment utiliser le plug-in d'installation dans des projets réels, et quelles sont les précautions à prendre pour utiliser le plug-in d'installation dans des projets réels. Ce qui suit est un cas pratique, jetons un coup d'œil.
Ce plugin est utilisé pour simplifier la création de fichiers HTML qui servent des bundles webpack, notamment lorsque le nom du fichier contient une valeur de hachage, et cette valeur change à chaque fois qu'il est compilé. Vous pouvez soit laisser ce plugin vous aider à générer automatiquement des fichiers HTML, utiliser des modèles lodash pour charger les bundles générés, soit charger les bundles vous-même.
Comment utiliser le plug-in d'installation dans des projets réels
Utilisez npm pour installer ce plug-in
$ npm install html-webpack-plugin@2 --save-dev
Basique Utilisation
Ce plugin peut aider à générer des fichiers HTML. Dans l'élément body, utilisez un script pour inclure tous vos bundles webpack. Configurez-le simplement comme suit dans votre fichier de configuration webpack :
var HtmlWebpackPlugin = require('html-webpack-plugin') var webpackConfig = { entry: 'index.js', output: { path: 'dist', filename: 'index_bundle.js' }, plugins: [new HtmlWebpackPlugin()] }<.>Ceci sera Un fichier nommé index.html sera automatiquement généré dans le répertoire dist avec le contenu suivant :
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Webpack App</title> </head> <body> <script src="index_bundle.js"></script> </body> </html>Si vous avez plusieurs points d'entrée du webpack, ils seront tous inclus dans l'élément de script généré . Si des ressources CSS sont incluses dans la sortie du webpack (par exemple, des CSS extraites à l'aide d'ExtractTextPlugin), celles-ci seront incluses dans l'élément d'en-tête de la page HTML à l'aide de liens.
Configuration
peut effectuer une série de configurations et prend en charge les informations de configuration suivantes{ entry: 'index.js', output: { path: 'dist', filename: 'index_bundle.js', hash: true }, plugins: [ new HtmlWebpackPlugin({ title: 'My App', filename: 'assets/admin.html' }) ] }
Générer plusieurs fichiers HTML
Générer plusieurs fichiers HTML en ajoutant ce plug-in plusieurs fois dans le fichier de configuration.{ entry: 'index.js', output: { path: 'dist', filename: 'index_bundle.js' }, plugins: [ new HtmlWebpackPlugin(), // Generates default index.html new HtmlWebpackPlugin({ // Also generate a test.html filename: 'test.html', template: 'src/assets/test.html' }) ] }
Écrire un modèle personnalisé
Si le fichier HTML généré par défaut ne répond pas à vos besoins, vous pouvez créer votre propre modèle personnalisé. Un moyen pratique consiste à transmettre l'option d'injection, puis à la transmettre à un fichier HTML personnalisé. html-webpack-plugin injectera automatiquement tous les fichiers CSS, js, manifeste et favicon requis dans le balisage.plugins: [ new HtmlWebpackPlugin({ title: 'Custom template', template: 'my-index.html', // Load a custom template inject: 'body' // Inject all scripts into the body }) ]fichier my-index.html
<!DOCTYPE html> <html> <head> <meta http-equiv="Content-type" content="text/html; charset=utf-8"/> <title><%= htmlWebpackPlugin.options.title %></title> </head> <body> </body> </html>Si vous disposez d'un chargeur de modèles, vous pouvez l'utiliser pour analyser ce modèle.
module: { loaders: [ { test: /\.hbs$/, loader: "handlebars" } ] }, plugins: [ new HtmlWebpackPlugin({ title: 'Custom template using Handlebars', template: 'my-index.hbs', inject: 'body' }) ]De plus, si votre modèle est une chaîne, vous pouvez le transmettre en utilisant templateContent.
plugins: [ new HtmlWebpackPlugin({ inject: true, templateContent: templateContentString }) ]Si la fonctionnalité d'injection ne répond pas à vos besoins, vous souhaitez un contrôle total sur le placement des ressources. Vous pouvez utiliser la syntaxe lodash directement, en utilisant le modèle par défaut comme point de départ pour créer votre propre modèle. L'option templateContent peut aussi être une fonction pour utiliser d'autres langages, comme le jade :
plugins: [ new HtmlWebpackPlugin({ templateContent: function(templateParams, compilation) { // Return your template content synchronously here return '..'; } }) ]ou la version asynchrone
plugins: [ new HtmlWebpackPlugin({ templateContent: function(templateParams, compilation, callback) { // Return your template content asynchronously here callback(null, '..'); } }) ]Notez que si vous utilisez template et templateContent, le plugin générera une erreur.
变量 o 在模板中是在渲染时传递进来的数据,这个变量有如下的属性:
1、htmlWebpackPlugin: 这个插件的相关数据 ◦
htmlWebpackPlugin.files: 资源的块名,来自 webpack 的 stats 对象,包含来自 entry 的从 entry point name 到 bundle 文件名映射。
"htmlWebpackPlugin": { "files": { "css": [ "main.css" ], "js": [ "assets/head_bundle.js", "assets/main_bundle.js"], "chunks": { "head": { "entry": "assets/head_bundle.js", "css": [ "main.css" ] }, "main": { "entry": "assets/main_bundle.js", "css": [] }, } } }
如果在 webpack 配置文件中,你配置了 publicPath,将会反射正确的资源
htmlWebpackPlugin.options: 传递给插件的配置。
2、webpack: webpack 的 stats 对象。
3、webpackConfig: webpack 配置信息。
过滤块
可以使用 chunks 来限定特定的块。
plugins: [ new HtmlWebpackPlugin({ chunks: ['app'] }) ]
还可以使用 excludeChunks 来排除特定块。
plugins: [ new HtmlWebpackPlugin({ excludeChunks: ['dev-helper'] }) ]
事件
通过事件允许其它插件来扩展 HTML。
html-webpack-plugin-before-html-processing
html-webpack-plugin-after-html-processing
html-webpack-plugin-after-emit
使用方式:
compilation.plugin('html-webpack-plugin-before-html-processing', function(htmlPluginData, callback) { htmlPluginData.html += 'The magic footer'; callback(); });
相信看了本文案例你已经掌握了方法,更多精彩请关注php中文网其它相关文章!
推荐阅读:
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!