国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

webpack進(jìn)階之插件篇

Tonny / 3423人閱讀

摘要:基本環(huán)境搭建就不展開講了一插件篇自動(dòng)補(bǔ)全前綴官方是這樣說的,也就是說它是一個(gè)自動(dòng)檢測兼容性給各個(gè)瀏覽器加個(gè)內(nèi)核前綴的插件。

上一篇博客講解了webpack環(huán)境的基本,這一篇講解一些更深入的內(nèi)容和開發(fā)技巧。基本環(huán)境搭建就不展開講了

一、插件篇 1. 自動(dòng)補(bǔ)全css3前綴

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)false  
3. 提取樣式插件

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 忽略拷貝指定的文件 可以用模糊匹配
5. 全局掛載插件

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

相關(guān)文章

  • 關(guān)于Vue2一些值得推薦的文章 -- 五、六月份

    摘要:五六月份推薦集合查看最新的請(qǐng)點(diǎn)擊集前端最近很火的框架資源定時(shí)更新,歡迎一下。蘇幕遮燎沈香宋周邦彥燎沈香,消溽暑。鳥雀呼晴,侵曉窺檐語。葉上初陽乾宿雨,水面清圓,一一風(fēng)荷舉。家住吳門,久作長安旅。五月漁郎相憶否。小楫輕舟,夢入芙蓉浦。 五、六月份推薦集合 查看github最新的Vue weekly;請(qǐng)::點(diǎn)擊::集web前端最近很火的vue2框架資源;定時(shí)更新,歡迎 Star 一下。 蘇...

    sutaking 評(píng)論0 收藏0
  • 關(guān)于Vue2一些值得推薦的文章 -- 五、六月份

    摘要:五六月份推薦集合查看最新的請(qǐng)點(diǎn)擊集前端最近很火的框架資源定時(shí)更新,歡迎一下。蘇幕遮燎沈香宋周邦彥燎沈香,消溽暑。鳥雀呼晴,侵曉窺檐語。葉上初陽乾宿雨,水面清圓,一一風(fēng)荷舉。家住吳門,久作長安旅。五月漁郎相憶否。小楫輕舟,夢入芙蓉浦。 五、六月份推薦集合 查看github最新的Vue weekly;請(qǐng)::點(diǎn)擊::集web前端最近很火的vue2框架資源;定時(shí)更新,歡迎 Star 一下。 蘇...

    khs1994 評(píng)論0 收藏0
  • 前端文檔收集

    摘要:系列種優(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 ...

    jsbintask 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<