[TOC]javascript
上一章講了webpack的基本用法,其中包括,安裝、初始化、簡單的demo,那這章來介紹一下進階的內容css
該插件能夠把須要公共的腳本打包成一個腳本,如我有兩個腳本,同時引用tools.js,會把公共的部分集成出來html
無需安裝java
##腳本jquery
module.exports = { writeContent: function (str) { document.write("tools write:" + str); } }
var tools = require("./tools"); tools.writeContent("<h3>I am the content page</h3>");
var tools = require("./tools"); tools.writeContent("<h2>I am the main page</h2>");
require("./main") require("./content")
###webpack.config.jswebpack
//採用path插件 var path = require('path'); var webpack = require('webpack'); //合併腳本配置 var commonsChunkPlugin = new webpack.optimize.CommonsChunkPlugin({ //生成公共信息 name: 'commons', filename: "commons.js", chunks: ["demo_index", "demo_main", "demo_content"], }); //定義了一些文件夾的路徑 var ROOT_PATH = path.resolve(__dirname); var BUILD_PATH = path.resolve(ROOT_PATH, 'demo/dist'); module.exports = { //項目的文件夾 能夠直接用文件夾名稱 默認會找index.js 也能夠肯定是哪一個文件名字 entry: { demo_index: ['./demo/index'], demo_main: ['./demo/main'], demo_content: ['./demo/content'], }, //輸出的文件名 合併之後的js會命名爲bundle.js後綴 output: { //demo/dist 生成在該目錄下 path: BUILD_PATH, filename: '[name]-bundle.js' }, //添加咱們的插件 會自動生成一個html文件 plugins: [ commonsChunkPlugin ] };
###index.html(測試html) 只要導入commons.js以及index_demo-budle.js便可web
<!DOCTYPE html> <html> <head> <meta charset="utf-8"/> </head> <body> <script type="text/javascript" charset="utf-8" src="dist/commons.js"> </script> <script type="text/javascript" charset="utf-8" src="dist/demo_index-bundle.js"> </script> </body> </html>
###命令 在項目根目錄輸入webpack,我是在src下的,可能和上面有點差異 npm
###結果 數組
是用於打包成html的一個插件app
|參數名|備註| |- |title|生成頁面標題| |filename|生成文件名字,默認assets/admin.html| |template|模板路徑| |favicon|頁面圖標地址| |hash|css是否進行hsash值存儲,默認true| |chunks|對哪些塊進行加入,默認所有entry,數組| |excludeChunks|移除哪些塊|
|命令|說明| |-|| |npm install html-loader --save-dev|html加載器| |npm install extract-text-webpack-plugin --save-dev|文本加載器| |npm install underscore-template-loader --save-dev|模板導入加載器| |npm install lodash --save-dev|依賴腳本|
var path = require('path'); var HtmlWebpackPlugin = require('html-webpack-plugin'); var ExtractTextPlugin = require('extract-text-webpack-plugin'); var webpack = require('webpack'); //定義了一些文件夾的路徑 var ROOT_PATH = path.resolve(__dirname); var BUILD_PATH = path.resolve(ROOT_PATH, 'src/app/dist'); module.exports = { //項目的文件夾 能夠直接用文件夾名稱 默認會找index.js 也能夠肯定是哪一個文件名字 entry: { demo_index: ['./src/demo/index'] }, //輸出的文件名 合併之後的js會命名爲bundle.js output: { path: BUILD_PATH, filename: '[name]-bundle.js' }, //添加咱們的插件 會自動生成一個html文件 plugins: [ new HtmlWebpackPlugin({ title: 'Hello HTML app', filename: 'main.html', template: './src/demo/template.html', chunks: ["demo_index"] }), new ExtractTextPlugin('styles.css') ], module: { loaders: [ { //能夠在頁面中使用加載 test: /\.html$/, loader: "underscore-template-loader" } ] }, };
<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <title><%= htmlWebpackPlugin.options.title %></title> <meta name="viewport" content="width=device-width, initial-scale=1"> </head> <body> <h2>hello template</h2> <button id="ID_btn">我是按鈕</button> @require('partial.html') </body> </html>
<h1>partial.html</h1>
define("index", ["./student", "../lib/jquery/jquery", "./main", "./content"], function (s, $) { $("#ID_btn").click(function() { s.alert("test btn"); }); });