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

資訊專欄INFORMATION COLUMN

webpack多入口文件配置模板

zoomdong / 1794人閱讀

摘要:概述本篇文章是目前多入口項(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)&&測(cè)試環(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/"){
            //此處可引入第三方庫(kù)文件等需要打包成公共模塊的文件
            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 = [
    //提供全局的變量,在模塊中使用無(wú)需用require引入
    new webpack.ProvidePlugin({
        jQuery: "jquery",
        $: "jquery",
        "window.jQuery": "jquery"
    }),
    //提取公共模塊
    new webpack.optimize.CommonsChunkPlugin({
        name: "vendor/vendor",
        filename: "[name].min.js",
        //開發(fā)模式時(shí)不提取公共模塊
        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ā)&測(cè)試&生產(chǎn)環(huán)境為"../",加載路徑動(dòng)態(tài)獲取
        熱加載環(huán)境時(shí)配置域名及輸出文件夾
        在入口文件中配置__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"],//自動(dòng)擴(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,在頁(yè)面script引入
    externals:{
        jquery:"jQuery"
    },
    plugins: plugins,
    //生產(chǎn)模式時(shí)關(guān)閉sourece-map模式
    devtool: isProduction()?null:"source-map",
};

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/80987.html

相關(guān)文章

  • 基于 Webpack 4 入口生成模板用于服務(wù)端渲染的方案及實(shí)戰(zhàn)

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

    big_cat 評(píng)論0 收藏0
  • 基于 Webpack 4 入口生成模板用于服務(wù)端渲染的方案及實(shí)戰(zhàn)

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

    Lavender 評(píng)論0 收藏0
  • vue+webpack頁(yè)面應(yīng)用

    摘要:多頁(yè)面應(yīng)用就是幾個(gè)單頁(yè)面應(yīng)用在一起。這篇文章使用的是總共有步我們從安裝好一個(gè)單頁(yè)面應(yīng)用說(shuō)起。在多頁(yè)面應(yīng)用中,因?yàn)橛卸鄠€(gè)應(yīng)用模板,所以建議把應(yīng)用模板放在一個(gè)文件夾里。例如創(chuàng)建每個(gè)單頁(yè)面應(yīng)用的入口文件。如能用單頁(yè)面應(yīng)用的,不使用多頁(yè)面應(yīng)用。 vue+webpack多頁(yè)面應(yīng)用 從git上初始化的vue項(xiàng)目框架是單頁(yè)面的。單頁(yè)面應(yīng)用可以實(shí)現(xiàn)大部分頁(yè)面web應(yīng)用開發(fā)。若要用到多頁(yè)面需要需要配置。...

    PascalXie 評(píng)論0 收藏0
  • webpack搭建頁(yè)面系統(tǒng)(三) 理解webpack.config.js的四個(gè)核心概念

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

    鄒強(qiáng) 評(píng)論0 收藏0
  • 前端臨床手札——webpack構(gòu)建逐步解構(gòu)(上)

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

    lowett 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<