摘要:基本環(huán)境搭建就不展開講了一插件篇自動(dòng)補(bǔ)全前綴官方是這樣說的,也就是說它是一個(gè)自動(dòng)檢測兼容性給各個(gè)瀏覽器加個(gè)內(nèi)核前綴的插件。
上一篇博客講解了webpack環(huán)境的基本,這一篇講解一些更深入的內(nèi)容和開發(fā)技巧。基本環(huán)境搭建就不展開講了
autoprefixer
官方是這樣說的:Parse CSS and add vendor prefixes to CSS rules using values from the Can I Use website
,也就是說它是一個(gè)自動(dòng)檢測兼容性給各個(gè)瀏覽器加個(gè)內(nèi)核前綴的插件。
舉個(gè)栗子:最新的彈性盒模型flux
實(shí)際代碼:
:fullscreen a { display: flex }
插件自動(dòng)補(bǔ)充后
a { display: -webkit-box; display: -webkit-flex; display: -ms-flexbox; display: flex }
效果顯而易見,我們可以更專注于css布局和美化,而不需要花過多的精力都寫相同的外碼而加上不同的前綴,也減少了冗余代碼。
使用方法:
cnpm install --save-dev autoprefixer postcss-loader
var autoprefixer = require("autoprefixer"); module.exports={ //其他配置這里就不寫了 module:{ loaders:[ { test:/.css$/, //在原有基礎(chǔ)上加上一個(gè)postcss的loader就可以了 loaders:["style-loader","css-loader","postcss-loader"] } ] }, postcss:[autoprefixer({browsers:["last 2 versions"]})] }2. 自動(dòng)生成html插件
html-webpack-plugin
cnpm install html-webpack-plugin --save-dev
//webpack.config.js var HtmlWebpackPlugin = require("html-webpack-plugin"); module.exports={ entry:"./index.js", output:{ path:__dirname+"/dist", filename:"bundle.js" } plugins:[ new HtmlWebpackPlugin() ] }
作用:它會(huì)在dist目錄下自動(dòng)生成一個(gè)index.html
Webpack App
其他配置參數(shù):
{ entry: "index.js", output: { path: "dist", filename: "bundle.js" }, plugins: [ new HtmlWebpackPlugin({ title: "My App", filename: "admin.html", template:"header.html", inject: "body", favicon:"./images/favico.ico", minify:true, hash:true, cache:false, showErrors:false, "chunks": { "head": { "entry": "assets/head_bundle.js", "css": [ "main.css" ] }, xhtml:false }) ] }
--- header.html ---<%= htmlWebpackPlugin.options.title %>
作用:
title: 設(shè)置title的名字 filename: 設(shè)置這個(gè)html的文件名 template:要使用的模塊的路徑 inject: 把模板注入到哪個(gè)標(biāo)簽后 "body", favicon: 給html添加一個(gè)favicon "./images/favico.ico", minify:是否壓縮 {...} | false (最新api變動(dòng),原來是ture|false 感謝@onmi指正) hash:是否hash化 true false , cache:是否緩存, showErrors:是否顯示錯(cuò)誤, chunks:目前沒太明白 xhtml:是否自動(dòng)畢業(yè)標(biāo)簽 默認(rèn)false3. 提取樣式插件
extract-text-webpack-plugin
官網(wǎng)是這么解釋的Extract text from bundle into a file.,把額外的數(shù)據(jù)加到編譯好的文件中
var ExtractTextPlugin = require("extract-text-webpack-plugin"); module.exports = { module: { loaders: [ { test: /.css$/, loader: ExtractTextPlugin.extract("style-loader", "css-loader") } ] }, plugins: [ new HtmlWebpackPlugin({ template: "./src/public/index.html", inject: "body" }), new ExtractTextPlugin("[name].[hash].css") ] }
說明:將css放到index.html的body上面
4. 拷貝資源插件copy-webpack-plugin
官方這樣解釋 Copy files and directories in webpack,在webpack中拷貝文件和文件夾
cnpm install --save-dev copy-webpack-plugin new CopyWebpackPlugin([{ from: __dirname + "/src/public" }]),
作用:把public 里面的內(nèi)容全部拷貝到編譯目錄
參數(shù) | 作用 | 其他說明 |
---|---|---|
from | 定義要拷貝的源目錄 | from: __dirname + "/src/public" |
to | 定義要烤盤膛的目標(biāo)目錄 | from: __dirname + "/dist" |
toType | file 或者 dir | 可選,默認(rèn)是文件 |
force | 強(qiáng)制覆蓋先前的插件 | 可選 默認(rèn)false |
context | 不知道作用 | 可選 默認(rèn) base context 可用 specific context |
flatten | 只拷貝文件不管文件夾 | 默認(rèn)是false |
ignore | 忽略拷貝指定的文件 | 可以用模糊匹配 |
webpack.ProvidePlugin [webpack內(nèi)置插件 ]
new webpack.ProvidePlugin({ $: "jquery", jQuery: "jquery", "window.jQuery": "jquery" })) new webpack.NoErrorsPlugin(), new webpack.optimize.DedupePlugin(), new webpack.optimize.UglifyJsPlugin(), new webpack.optimize.CommonsChunkPlugin("common.js")
作用: 和上面5個(gè)一一對(duì)應(yīng)
當(dāng)模塊使用這些變量的時(shí)候,wepback會(huì)自動(dòng)加載。(區(qū)別于window掛載,感謝@lihuanghe121指正) 不顯示錯(cuò)誤插件 查找相等或近似的模塊,避免在最終生成的文件中出現(xiàn)重復(fù)的模塊 丑化js 混淆代碼而用 提取公共代碼的插件二、一個(gè)完整的栗子
"use strict"; // Modules var webpack = require("webpack"); var autoprefixer = require("autoprefixer"); var HtmlWebpackPlugin = require("html-webpack-plugin"); var ExtractTextPlugin = require("extract-text-webpack-plugin"); var CopyWebpackPlugin = require("copy-webpack-plugin"); /** * Env * Get npm lifecycle event to identify the environment */ var ENV = process.env.npm_lifecycle_event; var isTest = ENV === "test" || ENV === "test-watch"; var isProd = ENV === "build"; module.exports = function makeWebpackConfig() { var config = {}; config.entry = isTest ? {} : { app: "./src/app/app.js" }; config.output = isTest ? {} : { // Absolute output directory path: __dirname + "/dist", publicPath: isProd ? "/" : "http://localhost:8080/", filename: isProd ? "[name].[hash].js" : "[name].bundle.js", chunkFilename: isProd ? "[name].[hash].js" : "[name].bundle.js" }; if (isTest) { config.devtool = "inline-source-map"; } else if (isProd) { config.devtool = "source-map"; } else { config.devtool = "eval-source-map"; } config.module = { preLoaders: [], loaders: [{ test: /.js$/, loader: "babel", exclude: /node_modules/ }, { test: /.css/, loader: isTest ? "null" : ExtractTextPlugin.extract("style", "css?sourceMap!postcss") }, { test: /.(png|jpg|jpeg|gif|svg|woff|woff2|ttf|eot)$/, loader: "file" }, { test: /.json$/, loader: "json" }, { test: /.scss/, loader: "style!css!sass" }, { test: /.html$/, loader: "raw" }] }; if (isTest) { config.module.preLoaders.push({ test: /.js$/, exclude: [ /node_modules/, /.spec.js$/ ], loader: "isparta-instrumenter" }) } config.postcss = [ autoprefixer({ browsers: ["last 2 version"] }) ]; config.plugins = []; if (!isTest) { config.plugins.push( new HtmlWebpackPlugin({ template: "./src/public/index.html", inject: "body" }), new ExtractTextPlugin("[name].[hash].css", {disable: !isProd}) ) } if (isProd) { config.plugins.push( new webpack.NoErrorsPlugin(), new webpack.optimize.DedupePlugin(), new webpack.optimize.UglifyJsPlugin(), new CopyWebpackPlugin([{ from: __dirname + "/src/public" }]), new webpack.ProvidePlugin({ $: "jquery", jQuery: "jquery", "window.jQuery": "jquery" })) } config.devServer = { contentBase: "./src/public", stats: "minimal" }; return config; }();三、調(diào)試技巧
if (isTest) { config.devtool = "inline-source-map"; }
作用: 使用source-map可以在debug的時(shí)候看到源代碼,方便 查錯(cuò)
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/79692.html
摘要:五六月份推薦集合查看最新的請(qǐng)點(diǎn)擊集前端最近很火的框架資源定時(shí)更新,歡迎一下。蘇幕遮燎沈香宋周邦彥燎沈香,消溽暑。鳥雀呼晴,侵曉窺檐語。葉上初陽乾宿雨,水面清圓,一一風(fēng)荷舉。家住吳門,久作長安旅。五月漁郎相憶否。小楫輕舟,夢入芙蓉浦。 五、六月份推薦集合 查看github最新的Vue weekly;請(qǐng)::點(diǎn)擊::集web前端最近很火的vue2框架資源;定時(shí)更新,歡迎 Star 一下。 蘇...
摘要:五六月份推薦集合查看最新的請(qǐng)點(diǎn)擊集前端最近很火的框架資源定時(shí)更新,歡迎一下。蘇幕遮燎沈香宋周邦彥燎沈香,消溽暑。鳥雀呼晴,侵曉窺檐語。葉上初陽乾宿雨,水面清圓,一一風(fēng)荷舉。家住吳門,久作長安旅。五月漁郎相憶否。小楫輕舟,夢入芙蓉浦。 五、六月份推薦集合 查看github最新的Vue weekly;請(qǐng)::點(diǎn)擊::集web前端最近很火的vue2框架資源;定時(shí)更新,歡迎 Star 一下。 蘇...
摘要:系列種優(yōu)化頁面加載速度的方法隨筆分類中個(gè)最重要的技術(shù)點(diǎn)常用整理網(wǎng)頁性能管理詳解離線緩存簡介系列編寫高性能有趣的原生數(shù)組函數(shù)數(shù)據(jù)訪問性能優(yōu)化方案實(shí)現(xiàn)的大排序算法一怪對(duì)象常用方法函數(shù)收集數(shù)組的操作面向?qū)ο蠛驮屠^承中關(guān)鍵詞的優(yōu)雅解釋淺談系列 H5系列 10種優(yōu)化頁面加載速度的方法 隨筆分類 - HTML5 HTML5中40個(gè)最重要的技術(shù)點(diǎn) 常用meta整理 網(wǎng)頁性能管理詳解 HTML5 ...
閱讀 1354·2021-09-10 10:51
閱讀 2829·2019-08-30 15:54
閱讀 3367·2019-08-29 17:11
閱讀 926·2019-08-29 16:44
閱讀 1391·2019-08-29 13:47
閱讀 1086·2019-08-29 13:47
閱讀 1485·2019-08-29 12:23
閱讀 1038·2019-08-28 18:18