摘要:續一一站到底啟動一個本地服務下載全局安裝不在插件里多帶帶當然也可以配置代理在文件頭添加注釋定義環境變量從命令行環境獲取參數定義瀏覽器中的替換的變量為但是如果打包完文件體積還是太大怎么辦呢我們可以用另外一個插件設置但是頁面必須引入分析
續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在逐漸成為一個成熟的青年路上,一直備受大家青睞, 然而還在不斷的健身,希望以最好的姿態呈現給各位,如今他已經v3。 比起1 、2又強化骨骼,變得更堅實。 一、什么是webpack 官方給出: Webpa...
摘要:等研發介入時,現場已經不復存在。因此,我要求戒律一凡是中間件,不管是自主研發的,還是以開源軟件為內核構建出來的,都必須自帶監控報警,否則不允許上線。 鄭昀(公眾號:老兵筆記) 20180411 showImg(https://segmentfault.com/img/bV8BWp?w=999&h=559); 如果你在繁忙的業務迭代中開始系統重構,恭喜你,說明你的業務已經完成了從0到1,...
摘要:是的你沒有聽錯今天介紹的兩款能讓你的在處理和時性能提升倍以上他們分別是看名字就知道它們相比官方版本的要更快那到底有多快下面給個性能對比性能對比以上的文件測試結果如下可以看到的性能遠高于并且由于去重功能其打包的體積更 是的, 你沒有聽錯, 今天介紹的兩款 loader 能讓你的 webpack 在處理 sass 和 css 時性能提升 10 倍以上, 他們分別是: fast-sass-...
摘要:更多資源請文章轉自月份前端資源分享的作用數組元素隨機化排序算法實現學習筆記數組隨機排序個變態題解析上個變態題解析下中的數字前端開發筆記本過目不忘正則表達式聊一聊前端存儲那些事兒一鍵分享到各種寫給剛入門的前端工程師的前后端交互指南物聯網世界的 更多資源請Star:https://github.com/maidishike... 文章轉自:https://github.com/jsfr...
摘要:的另一個核心特性,蘋果表示也正在開發中,按開發進度可能幾個月后就能與我們見面。是基于的本地化數據庫,支持以及瀏覽器環境。 前端每周清單專注前端領域內容,以對外文資料的搜集為主,幫助開發者了解一周前端熱點;分為新聞熱點、開發教程、工程實踐、深度閱讀、開源項目、巔峰人生等欄目。歡迎關注【前端之巔】微信公眾號(ID: frontshow),及時獲取前端每周清單。 本期是 2017 年的最后一...
閱讀 3510·2021-11-25 09:43
閱讀 1266·2021-09-08 09:45
閱讀 2643·2021-09-07 09:59
閱讀 1502·2021-08-09 13:45
閱讀 3339·2019-08-30 15:54
閱讀 696·2019-08-29 18:35
閱讀 513·2019-08-29 17:18
閱讀 992·2019-08-29 14:10