Vue和Vux開發WebApp日誌四、繼續完善gulp任務,增加命令列參數

來源:互聯網
上載者:User

標籤:.json   nan   output   logs   blank   gets   語句   項目   uil   

轉載請註明出處:http://www.cnblogs.com/shamoyuu/p/vue_vux_4.html

 

項目github地址:https://github.com/shamoyuu/vue-vux-iconan

上一章我們基本上完成了開發、打包的任務,但是還有很多問題,例如build.webapp會打包到dist/www檔案夾中,我們希望是dist檔案夾

我們這章來解決這個問題。

首先在項目根目錄建立一個檔案options.json

{    "targets": {        "mobile": {            "environments": {                "test": {                    "service": "http://meleong.duapp.com/psh/union"                },                "production": {                    "service": "http://meleong.duapp.com/psh/union"                }            },            "platforms": {                "android": {                    "cordovaVersion": "5.2.2"                },                "ios": {                    "cordovaVersion": "4.3.0"                }            }        },        "webapp": {            "environments": {                "test": {                    "service": "http://meleong.duapp.com/psh/union"                },                "production": {                    "service": "http://meleong.duapp.com/psh/union"                }            }        }    }}

這個檔案儲存體我們需要的配置資訊

然後我們在gulpfile.js檔案裡擷取它

const options = require(‘./options.json‘);

 

然後先放著,我們來擷取命令列參數。

擷取命令列參數需要用到minimist外掛程式,來將process.argv數組轉化成一個對象

const minimist = require(‘minimist‘);//命令列參數配置const argsOptions = {    string: [‘e‘, ‘p‘, ‘t‘],    default: {        e: ‘production‘, //環境,可選值有【test】【production】        p: ‘android‘, //平台,只在t為mobile時有效,可選值有【android】        t: ‘webapp‘ //目標,選擇性參數有【mobile】【webapp】    }};const args = minimist(process.argv.slice(2), argsOptions);

 

這樣我們的設定檔和命令列參數都擷取到了,我們來繼續完善任務。

首先擷取這3個參數的值

const target = options.targets[args.t];if(!target || !args.t){    throw(‘目標‘ + args.t + ‘不存在‘);}const env = options.targets[args.t].env[args.e];if(!env || !args.e){    throw(‘環境‘ + args.e + ‘不存在‘);}let platform = ‘android‘;if(args.t == ‘mobile‘){    platform = options.targets[args.t].platforms[args.p];    if(!platform){        throw(‘平台‘ + args.p + ‘不存在‘);    }}

 

然後修改config/index.js檔案,給exports添加一個屬性用來在target=webapp時使用

buildWebapp: {    index: path.resolve(__dirname, ‘../dist/index.html‘),    assetsRoot: path.resolve(__dirname, ‘../dist‘)}

 

然後我們修改gulpfile檔案,添加一個target的環境變數

process.env.target = args.t;

這樣就能在其他檔案中擷取當前的target了

但是需要把擷取webpackConfig對象的語句放到這一行下面。

 

然後我們修改build/webpack.prod.conf.js檔案,首先判斷當前target是否為mobild

const isMobile = process.env.target == ‘mobile‘;

 

然後修改HtmlWebpackPlugin外掛程式的filename

filename: isMobile ? config.build.index : config.buildWebapp.index

修改output的path

path: isMobile ? config.build.assetsRoot : config.buildWebapp.assetsRoot

好了,現在不同的target可以打包到不同的路徑下。

但是這還不夠,我們下一章來完善target。

 

Vue和Vux開發WebApp日誌四、繼續完善gulp任務,增加命令列參數

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.