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

資訊專欄INFORMATION COLUMN

webpack——一站到底二

王笑朝 / 2685人閱讀

摘要:續一一站到底啟動一個本地服務下載全局安裝不在插件里多帶帶當然也可以配置代理在文件頭添加注釋定義環境變量從命令行環境獲取參數定義瀏覽器中的替換的變量為但是如果打包完文件體積還是太大怎么辦呢我們可以用另外一個插件設置但是頁面必須引入分析

續webpack一——一站到底
(7)webpack-dev-server 啟動一個本地服務

  下載:npm i webpack-dev-server -g  //全局安裝
  不在插件里 多帶帶
  devServer: {
      host:"localhost",
      port:4000,
      contentBase:_dirname + "/dev"
  }
  當然也可以配置代理
  proxy: {
      "/api":{
          target: "http://localhost",
          changeOrigin:true,
          pathRewrite: {
              "^/vip": ""
          }
      }
  }

(8)webpack.BannerPlugin 在文件頭添加注釋
(9)webpack.DefinePlugin 定義環境變量

const webpack = require("webpack");
const NODE_ENV = process.env.NODE_ENV; // 從命令行環境獲取 NODE_ENV 參數
module.exports = {
    plugins: [
        new webpack.DefinePlugin({
            "process.env": {
                "NODE_ENV": JSON.stringify(NODE_ENV)
            } // 定義瀏覽器中的替換的變量為 `process.env.NODE_ENV`
        })
    ]
}

(10)但是如果打包完文件體積還是太大怎么辦呢?

我們可以用另外一個插件CommonsChunkPlugin
設置:
{
  entry: {
   bundle: "app"
    vendor: ["app"]
  }

  plugins: {
    new webpack.optimize.CommonsChunkPlugin("vendor",  "vendor.js")
  }
}   
但是頁面必須引入
 
 

(11) 分析打包后項目用到的各種包的大小 webpack-visualizer-plugin

var Visualizer = require("webpack-visualizer-plugin");

//...
plugins: [new Visualizer({
  filename: "./statistics.html"
})],
//... 
其他

1.版本號控制

下載htmlwebpackplugin插件
getPath("[name]@[chunkhash:6].css")
css 和 js 多 chrunk
// 生成抽離文本文件插件的實例
    new ExtractTextPlugin({
      filename: (getPath)=>{
        return getPath("[name]@[chunkhash:6].css").replace("scripts", "styles")
      },
      allChunks: true
    }),

2.devtool: "source-map" 源碼映射 方便開發時調試代碼
3.環境變量配置(mac)

設置:
    >cd ~/.profile
    >node
    >process.env
  出去  >export NODE_ENV=production   //配置環境變量
       //查看
       >node
       >process.env.NODE_ENV   => "production"
 window下是 set NODE_ENV=production
 
 然后在package.json下
 “script”: {
     "dev": "export NODE_ENV=dev && webpack && webpack-dev-server",
     "build": "export NODE_ENV=prod && webpack"
 }
 然后在config.js中針對環境進行判斷 打包
 
三、安裝
npm i webpack -g
四、配置
webpack.config.js,同gulpfile.js和Gruntfile.js一樣,就是配置項 
五、可實施的配置
// 引入webpack
var webpack = require("webpack")

// 引入文本抽離插件
var ExtractTextPlugin = require("extract-text-webpack-plugin")

// 引入html生成插件
var HtmlWebpackPlugin = require("html-webpack-plugin")

// 引入openBrowser 插件
var OpenBrowserPlugin = require("open-browser-webpack-plugin")

var outputDir = ""

if (process.env.NODE_ENV === "dev") {
  outputDir = "/dev"
} else {
  outputDir = "/prod"
}

var public = {
  // 配置入口
  entry: {
    "scripts/app": "./src/scripts/app.js",
    "scripts/search": "./src/scripts/search.js"
  },

  // 配置出口
  output: {
    filename: "[name]@[chunkhash:6].js",
    path: __dirname + outputDir  // 必須是絕對路徑
  },

  // devtool 配置
  devtool: "source-map",

  // 配置模塊
  module: {
    rules: [
      // 解析ES6+
      {
        test: /.js$/,
        exclude: /node_modules/, // 排除node_modules下.js的解析
        use: [
          {
            loader: "babel-loader" // 應用babel-loader解析ES6+
          }
        ]
      },

      // 加載scss
      {
        test: /.scss$/,
        use:
        //[
          // { loader: "style-loader" },
          // { loader: "css-loader" },
          // { loader: "sass-loader" }
        //]
        // CSS抽離
          ExtractTextPlugin.extract({
            fallback: "style-loader",
            use: ["css-loader", "sass-loader"]
          })
      },

      // 加載css
      {
        test: /.css$/,
        use: [
          { loader: "style-loader" },
          { loader: "css-loader" }
        ]
      },

      // 加載圖片
      {
        test: /.(png|jpe?g|gif|svg)(?.*)?$/,
        loader: "url-loader",
        options: {
          limit: 1000,
          name: "media/images/[name].[hash:7].[ext]"
        }
      },

      // 加載媒體文件
      {
        test: /.(mp4|webm|ogg|mp3|wav|flac|aac)(?.*)?$/,
        loader: "url-loader",
        options: {
          limit: 10000,
          name: "media/mp4/[name].[hash:7].[ext]"
        }
      },

      // 加載iconfont
      {
        test: /.(woff2?|eot|ttf|otf)(?.*)?$/,
        loader: "url-loader",
        options: {
          limit: 10000,
          name: "media/iconfont/[name].[hash:7].[ext]"
        }
      }
    ]
  },

  // 配置插件
  plugins: [
    // 生成抽離文本文件插件的實例
    new ExtractTextPlugin({
      filename: (getPath)=>{
        return getPath("[name]@[chunkhash:6].css").replace("scripts", "styles")
      },
      allChunks: true
    }),

    // 生成編譯HTML(index.html)的插件的實例
    new HtmlWebpackPlugin({
      template: "./src/index.html",
      filename: "index.html",
      chunks: ["scripts/app"]
    }),

    // 生成編譯HTML(search.html)的插件的實例
    new HtmlWebpackPlugin({
      template: "./src/search.html",
      filename: "search.html",
      chunks: ["scripts/search"]
    }),

    // 代碼壓縮
    new webpack.optimize.UglifyJsPlugin({
      compress: {
        warnings: false
      },
      output: {
        comments: false
      }
    }),

    // 自動在打開瀏覽器打開頁面
    // new OpenBrowserPlugin({
    //   url: "http://localhost:4000"
    // })
  ]
}

var devserver = { // 配置webserver
  devServer: {
    host: "localhost",
    port: 4000,
    contentBase: __dirname + outputDir,
    noInfo: true,
    proxy: {
      "/api": {
        target: "https://api.douban.com/",
        changeOrigin: true,
        pathRewrite: {
          "^/api": ""
        }
      },
      "/vip": {
        target: "http://localhost:9000/",
        changeOrigin: true,
        pathRewrite: {
          "^/vip": ""
        }
      }
    }
  }
}

if (process.env.NODE_ENV === "dev") {
  module.exports = Object.assign({}, public, devserver)
} else {
  module.exports = public
}
webpack1到webpack3的時候 loader加載格式更改
style-loader必須寫到fallback屬性上,版本1的時候直接loader:"style-loader!css-loader"
希望對大家有幫助!

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/90299.html

相關文章

  • webpack——一站到底

    摘要:入門在逐漸成為一個成熟的青年路上,一直備受大家青睞,然而還在不斷的健身,希望以最好的姿態呈現給各位,如今他已經。比起又強化骨骼,變得更堅實。 webpack入門 webpack在逐漸成為一個成熟的青年路上,一直備受大家青睞, 然而還在不斷的健身,希望以最好的姿態呈現給各位,如今他已經v3。 比起1 、2又強化骨骼,變得更堅實。 一、什么是webpack 官方給出: Webpa...

    dack 評論0 收藏0
  • 當我們談重構的時候我們想談什么?

    摘要:等研發介入時,現場已經不復存在。因此,我要求戒律一凡是中間件,不管是自主研發的,還是以開源軟件為內核構建出來的,都必須自帶監控報警,否則不允許上線。 鄭昀(公眾號:老兵筆記) 20180411 showImg(https://segmentfault.com/img/bV8BWp?w=999&h=559); 如果你在繁忙的業務迭代中開始系統重構,恭喜你,說明你的業務已經完成了從0到1,...

    junbaor 評論0 收藏0
  • 讓你的 webpack sass 和 css 處理性能 10 倍提升

    摘要:是的你沒有聽錯今天介紹的兩款能讓你的在處理和時性能提升倍以上他們分別是看名字就知道它們相比官方版本的要更快那到底有多快下面給個性能對比性能對比以上的文件測試結果如下可以看到的性能遠高于并且由于去重功能其打包的體積更 是的, 你沒有聽錯, 今天介紹的兩款 loader 能讓你的 webpack 在處理 sass 和 css 時性能提升 10 倍以上, 他們分別是: fast-sass-...

    張漢慶 評論0 收藏0
  • 7月份前端資源分享

    摘要:更多資源請文章轉自月份前端資源分享的作用數組元素隨機化排序算法實現學習筆記數組隨機排序個變態題解析上個變態題解析下中的數字前端開發筆記本過目不忘正則表達式聊一聊前端存儲那些事兒一鍵分享到各種寫給剛入門的前端工程師的前后端交互指南物聯網世界的 更多資源請Star:https://github.com/maidishike... 文章轉自:https://github.com/jsfr...

    pingan8787 評論0 收藏0
  • 前端每周清單第 45 期: Safari 支持 Service Worker, Parcel 完整教

    摘要:的另一個核心特性,蘋果表示也正在開發中,按開發進度可能幾個月后就能與我們見面。是基于的本地化數據庫,支持以及瀏覽器環境。 前端每周清單專注前端領域內容,以對外文資料的搜集為主,幫助開發者了解一周前端熱點;分為新聞熱點、開發教程、工程實踐、深度閱讀、開源項目、巔峰人生等欄目。歡迎關注【前端之巔】微信公眾號(ID: frontshow),及時獲取前端每周清單。 本期是 2017 年的最后一...

    趙春朋 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<