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

資訊專欄INFORMATION COLUMN

webpack多入口文件配置模板

zoomdong / 1781人閱讀

摘要:概述本篇文章是目前多入口項目中使用的配置文件,配置文件匹配目錄規范使用。

概述

本篇文章是目前多入口項目中使用的配置文件,配置文件匹配目錄規范使用。

初始設置

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

相關文章

  • 基于 Webpack 4 入口生成模板用于服務端渲染的方案及實戰

    摘要:原作者原鏈接基于多入口生成模板用于服務端渲染的方案及實戰法律聲明警告本作品遵循署名非商業性使用禁止演繹未本地化版本協議發布。這是什么背景現代化的前端項目中很多都使用了客戶端渲染的單頁面應用。 原作者:@LinuxerPHL原鏈接:基于 Webpack 4 多入口生成模板用于服務端渲染的方案及實戰 法律聲明 警告:本作品遵循 署名-非商業性使用-禁止演繹3.0 未本地化版本(CC BY-...

    big_cat 評論0 收藏0
  • 基于 Webpack 4 入口生成模板用于服務端渲染的方案及實戰

    摘要:原作者原博文地址基于多入口生成模板用于服務端渲染的方案及實戰法律聲明警告本作品遵循署名非商業性使用禁止演繹未本地化版本協議發布。這是什么背景現代化的前端項目中很多都使用了客戶端渲染的單頁面應用。 原作者:@LinuxerPHL原博文地址: 基于 Webpack 4 多入口生成模板用于服務端渲染的方案及實戰 法律聲明 警告:本作品遵循 署名-非商業性使用-禁止演繹3.0 未本地化版本(...

    Lavender 評論0 收藏0
  • vue+webpack頁面應用

    摘要:多頁面應用就是幾個單頁面應用在一起。這篇文章使用的是總共有步我們從安裝好一個單頁面應用說起。在多頁面應用中,因為有多個應用模板,所以建議把應用模板放在一個文件夾里。例如創建每個單頁面應用的入口文件。如能用單頁面應用的,不使用多頁面應用。 vue+webpack多頁面應用 從git上初始化的vue項目框架是單頁面的。單頁面應用可以實現大部分頁面web應用開發。若要用到多頁面需要需要配置。...

    PascalXie 評論0 收藏0
  • webpack搭建頁面系統(三) 理解webpack.config.js的四個核心概念

    摘要:關于模板的有好幾種。一次安裝所有的大家可以了解一些的用法把編譯成。安裝參考文檔功能將源文件遷移到指定的目錄,返回新的文件路徑。安裝用法它會將所有的入口中引用的移動到和頁面對應的獨立分離的文件。 webpack是需要自己編寫自己需要的一個配置對象,取決你如何使用webpack,下面指定了所有的可用的配置選項。參考文檔:https://doc.webpack-china.org... we...

    鄒強 評論0 收藏0
  • 前端臨床手札——webpack構建逐步解構(上)

    摘要:前言由于博主最近又閑下來了,之前覺得的官方文檔比較難啃一直放到現在。文章會逐步分析每個處理的用意當然是博主自己的理解,不足之處歡迎指出溝通交流。后續將會補上構建生產的配置分析,案例參考。前端臨床手札構建逐步解構下 前言 由于博主最近又閑下來了,之前覺得webpack的官方文檔比較難啃一直放到現在。細心閱讀多個webpack配置案例后覺得還是得自己寫個手腳架,當然這個案例是基于vue的,...

    lowett 評論0 收藏0

發表評論

0條評論

zoomdong

|高級講師

TA的文章

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