摘要:概述本篇文章是目前多入口項(xiàng)目中使用的配置文件,配置文件匹配目錄規(guī)范使用。
概述
本篇文章是目前多入口項(xiàng)目中使用的配置文件,配置文件匹配目錄規(guī)范使用。
初始設(shè)置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
// 判斷生產(chǎn)&&測試環(huán)境 var isProduction = function() { return process.env.NODE_ENV ==="production"; }; // 判斷開發(fā)(熱加載)環(huán)境 var isHot = function() { return process.env.NODE_ENV === "hotdev"; }; // 不同環(huán)境輸出到不同文件夾 var sEnvironment = function() { switch(process.env.NODE_ENV){ case "hotdev": return "/hot/"; case "production": return "/dist/"; default: return "/dev/"; } }; // 運(yùn)行終端: "mobile/"表示微信端;"basic/"表示PC端 // 項(xiàng)目原因有兩套配置文件 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", //開發(fā)模式時不提取公共模塊 minChunks: isProduction() ? 10 : false }), //多帶帶打包c(diǎn)ss 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), /** 用于配置文件發(fā)布路徑; 開發(fā)&測試&生產(chǎn)環(huán)境為"../",加載路徑動態(tài)獲取 熱加載環(huán)境時配置域名及輸出文件夾 在入口文件中配置__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"],//自動擴(kuò)展文件后綴 root: [//設(shè)置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, //生產(chǎn)模式時關(guān)閉sourece-map模式 devtool: isProduction()?null:"source-map", };
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/80987.html
摘要:原作者原鏈接基于多入口生成模板用于服務(wù)端渲染的方案及實(shí)戰(zhàn)法律聲明警告本作品遵循署名非商業(yè)性使用禁止演繹未本地化版本協(xié)議發(fā)布。這是什么背景現(xiàn)代化的前端項(xiàng)目中很多都使用了客戶端渲染的單頁面應(yīng)用。 原作者:@LinuxerPHL原鏈接:基于 Webpack 4 多入口生成模板用于服務(wù)端渲染的方案及實(shí)戰(zhàn) 法律聲明 警告:本作品遵循 署名-非商業(yè)性使用-禁止演繹3.0 未本地化版本(CC BY-...
摘要:原作者原博文地址基于多入口生成模板用于服務(wù)端渲染的方案及實(shí)戰(zhàn)法律聲明警告本作品遵循署名非商業(yè)性使用禁止演繹未本地化版本協(xié)議發(fā)布。這是什么背景現(xiàn)代化的前端項(xiàng)目中很多都使用了客戶端渲染的單頁面應(yīng)用。 原作者:@LinuxerPHL原博文地址: 基于 Webpack 4 多入口生成模板用于服務(wù)端渲染的方案及實(shí)戰(zhàn) 法律聲明 警告:本作品遵循 署名-非商業(yè)性使用-禁止演繹3.0 未本地化版本(...
摘要:多頁面應(yīng)用就是幾個單頁面應(yīng)用在一起。這篇文章使用的是總共有步我們從安裝好一個單頁面應(yīng)用說起。在多頁面應(yīng)用中,因?yàn)橛卸鄠€應(yīng)用模板,所以建議把應(yīng)用模板放在一個文件夾里。例如創(chuàng)建每個單頁面應(yīng)用的入口文件。如能用單頁面應(yīng)用的,不使用多頁面應(yīng)用。 vue+webpack多頁面應(yīng)用 從git上初始化的vue項(xiàng)目框架是單頁面的。單頁面應(yīng)用可以實(shí)現(xiàn)大部分頁面web應(yīng)用開發(fā)。若要用到多頁面需要需要配置。...
摘要:關(guān)于模板的有好幾種。一次安裝所有的大家可以了解一些的用法把編譯成。安裝參考文檔功能將源文件遷移到指定的目錄,返回新的文件路徑。安裝用法它會將所有的入口中引用的移動到和頁面對應(yīng)的獨(dú)立分離的文件。 webpack是需要自己編寫自己需要的一個配置對象,取決你如何使用webpack,下面指定了所有的可用的配置選項(xiàng)。參考文檔:https://doc.webpack-china.org... we...
摘要:前言由于博主最近又閑下來了,之前覺得的官方文檔比較難啃一直放到現(xiàn)在。文章會逐步分析每個處理的用意當(dāng)然是博主自己的理解,不足之處歡迎指出溝通交流。后續(xù)將會補(bǔ)上構(gòu)建生產(chǎn)的配置分析,案例參考。前端臨床手札構(gòu)建逐步解構(gòu)下 前言 由于博主最近又閑下來了,之前覺得webpack的官方文檔比較難啃一直放到現(xiàn)在。細(xì)心閱讀多個webpack配置案例后覺得還是得自己寫個手腳架,當(dāng)然這個案例是基于vue的,...
閱讀 1696·2021-11-23 09:51
閱讀 3218·2021-09-26 10:21
閱讀 814·2021-09-09 09:32
閱讀 893·2019-08-29 16:06
閱讀 3322·2019-08-26 13:36
閱讀 783·2019-08-26 10:56
閱讀 2575·2019-08-26 10:44
閱讀 1155·2019-08-23 14:04