摘要:概述本篇文章是目前多入口項目中使用的配置文件,配置文件匹配目錄規范使用。
概述
本篇文章是目前多入口項目中使用的配置文件,配置文件匹配目錄規范使用。
初始設置package.json
"scripts": { "hot": "set NODE_ENV=hotdev&&webpack-dev-server --inline --hot --colors --host 127.0.1.1 --port 80", "dev": "set NODE_ENV=development&&webpack --progress --colors", "product": "set NODE_ENV=production&&webpack --progress --colors" },
webpack.config.js
// 判斷生產&&測試環境 var isProduction = function() { return process.env.NODE_ENV ==="production"; }; // 判斷開發(熱加載)環境 var isHot = function() { return process.env.NODE_ENV === "hotdev"; }; // 不同環境輸出到不同文件夾 var sEnvironment = function() { switch(process.env.NODE_ENV){ case "hotdev": return "/hot/"; case "production": return "/dist/"; default: return "/dev/"; } }; // 運行終端: "mobile/"表示微信端;"basic/"表示PC端 // 項目原因有兩套配置文件 var sSystem = "basic/";需要安裝的插件
var webpack = require("webpack"); var path = require("path"); var glob = require("glob"); var precss = require("precss"); var autoprefixer = require("autoprefixer"); var ExtractTextPlugin = require("extract-text-webpack-plugin");獲取多入口文件方法
function getEntry() { var entry = {}; var nLength = sSystem.length - 1; var srcDirName = "./src/ovdream/"+sSystem+"*/*/*.js"; //需要獲取的文件路徑 glob.sync(srcDirName).forEach(function (name) { //name:./src/ovdream/basic/member/index/index.js //裁剪路徑 var n = name.slice(name.lastIndexOf(sSystem) + nLength, name.length - 3); //n:/member/index/index n = n.slice(0, n.lastIndexOf("/")); //n:/member/index entry[n] = name; if(sSystem==="mobile/"){ //此處可引入第三方庫文件等需要打包成公共模塊的文件 entry["vendor/vendor"]=["./src/ovdream/global/global.css"]; }else{ entry["vendor/vendor"]=["./src/ovdream/global/global.js","./src/libs/layer/need/layer.css",; } }); console.log("是否壓縮文件:"+isProduction()); console.log("輸出路徑:"+sEnvironment()+"ovdream/"+sSystem); return entry; }配置
別名
var alias={}; if(sSystem==="mobile/"){ alias={ "layer": "layer_mobile/layer", "layercss": "layer_mobile/need/layer", }; }else{ alias={ "layer": "layer/layer", "layercss": "layer/need/layer", }; }
插件
var plugins = [ //提供全局的變量,在模塊中使用無需用require引入 new webpack.ProvidePlugin({ jQuery: "jquery", $: "jquery", "window.jQuery": "jquery" }), //提取公共模塊 new webpack.optimize.CommonsChunkPlugin({ name: "vendor/vendor", filename: "[name].min.js", //開發模式時不提取公共模塊 minChunks: isProduction() ? 10 : false }), //多帶帶打包css new ExtractTextPlugin("[name].min.css"), ]; if (isProduction()) { plugins.push( //文件壓縮/混淆 new webpack.optimize.UglifyJsPlugin({ compress: { warnings: false }, mangle: { except: ["$", "webpackJsonpCallback"] } }) ); }
module.exports = { entry: getEntry(),//入口文件 output: { path: path.join(__dirname,sEnvironment()+"ovdream/"+sSystem), /** 用于配置文件發布路徑; 開發&測試&生產環境為"../",加載路徑動態獲取 熱加載環境時配置域名及輸出文件夾 在入口文件中配置__webpack_public_path__(一般配置在vendor文件中) **/ publicPath:isHot()?("http://common.statics.ovdream.com"+sEnvironment()+"ovdream/"+sSystem):"../", filename:"[name].min.js", //異步加載文件命名,hash值避免重命名 chunkFilename: "[name].[chunkhash:8].js" }, resolve: { extensions: ["", ".js", ".json", ".css"],//自動擴展文件后綴 root: [//設置alias文件引用根目錄 path.resolve("./src/libs") ], alias:alias }, module: { loaders:[ { test: /.css$/, loader:ExtractTextPlugin.extract("style-loader","css-loader?sourceMap!postcss-loader")}, { test: /.(png|jpg|gif|svg)$/, loader: "url-loader?limit=8192&name=image/[name].[ext]"}, { test: /.(eot|ttf|woff)$/i, loader: "url?limit=10000&name=fonts/[name].[ext]" } ] }, postcss: function() { if(sSystem==="mobile/"){ return [ precss, autoprefixer({ browsers: [">5%", "ios 7", "ios 8"] }) ]; }else{ return [ precss, autoprefixer({ browsers: ">5%"}) ]; } }, //外部變量jQuery,在頁面script引入 externals:{ jquery:"jQuery" }, plugins: plugins, //生產模式時關閉sourece-map模式 devtool: isProduction()?null:"source-map", };
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/80987.html
摘要:原作者原鏈接基于多入口生成模板用于服務端渲染的方案及實戰法律聲明警告本作品遵循署名非商業性使用禁止演繹未本地化版本協議發布。這是什么背景現代化的前端項目中很多都使用了客戶端渲染的單頁面應用。 原作者:@LinuxerPHL原鏈接:基于 Webpack 4 多入口生成模板用于服務端渲染的方案及實戰 法律聲明 警告:本作品遵循 署名-非商業性使用-禁止演繹3.0 未本地化版本(CC BY-...
摘要:原作者原博文地址基于多入口生成模板用于服務端渲染的方案及實戰法律聲明警告本作品遵循署名非商業性使用禁止演繹未本地化版本協議發布。這是什么背景現代化的前端項目中很多都使用了客戶端渲染的單頁面應用。 原作者:@LinuxerPHL原博文地址: 基于 Webpack 4 多入口生成模板用于服務端渲染的方案及實戰 法律聲明 警告:本作品遵循 署名-非商業性使用-禁止演繹3.0 未本地化版本(...
摘要:多頁面應用就是幾個單頁面應用在一起。這篇文章使用的是總共有步我們從安裝好一個單頁面應用說起。在多頁面應用中,因為有多個應用模板,所以建議把應用模板放在一個文件夾里。例如創建每個單頁面應用的入口文件。如能用單頁面應用的,不使用多頁面應用。 vue+webpack多頁面應用 從git上初始化的vue項目框架是單頁面的。單頁面應用可以實現大部分頁面web應用開發。若要用到多頁面需要需要配置。...
摘要:關于模板的有好幾種。一次安裝所有的大家可以了解一些的用法把編譯成。安裝參考文檔功能將源文件遷移到指定的目錄,返回新的文件路徑。安裝用法它會將所有的入口中引用的移動到和頁面對應的獨立分離的文件。 webpack是需要自己編寫自己需要的一個配置對象,取決你如何使用webpack,下面指定了所有的可用的配置選項。參考文檔:https://doc.webpack-china.org... we...
摘要:前言由于博主最近又閑下來了,之前覺得的官方文檔比較難啃一直放到現在。文章會逐步分析每個處理的用意當然是博主自己的理解,不足之處歡迎指出溝通交流。后續將會補上構建生產的配置分析,案例參考。前端臨床手札構建逐步解構下 前言 由于博主最近又閑下來了,之前覺得webpack的官方文檔比較難啃一直放到現在。細心閱讀多個webpack配置案例后覺得還是得自己寫個手腳架,當然這個案例是基于vue的,...
閱讀 1684·2021-11-23 09:51
閱讀 3174·2021-09-26 10:21
閱讀 798·2021-09-09 09:32
閱讀 881·2019-08-29 16:06
閱讀 3308·2019-08-26 13:36
閱讀 772·2019-08-26 10:56
閱讀 2564·2019-08-26 10:44
閱讀 1143·2019-08-23 14:04