成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

webpack多入口文件配置模板

zoomdong / 1791人閱讀

摘要:概述本篇文章是目前多入口項(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

相關(guān)文章

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

    摘要:原作者原鏈接基于多入口生成模板用于服務(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-...

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

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

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

    摘要:多頁面應(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ā)。若要用到多頁面需要需要配置。...

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

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

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

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

    lowett 評論0 收藏0

發(fā)表評論

0條評論

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