簡體   English   中英

來自外部文件的Grunt服務器任務配置

[英]Grunt server task config from external files

我正在運行Angular.js應用程序,並且所有任務管理都是通過grunt進行的,現在,我在實時重新加載中觀察着三個組件,bower_components,發票和用戶,最終它們的數量將會增加,因此我想知道是否有一種方法可以調用諸如components.json之類的外部文件並遍歷其n個成員。 這是我的代碼:

// The grunt server settings
connect: {
    options: {
        port: 9000,
        hostname: 'localhost',
        livereload: 35729
    },
    livereload: {
        options: {
            open: true,
            middleware: function (connect) {
                return [
                    connect.static('.tmp'),
                    connect().use(
                        '/bower_components',
                        connect.static('./bower_components')
                    ),
                    connect().use(
                        '/invoices',
                        connect.static(invoicesAppPathConfig.root)
                    ),
                    connect().use(
                        '/users',
                        connect.static(usersAppPathConfig.root)
                    ),
                    connect.static(secureAppPathConfig.app)
                ];
            }
        }
    },
    dist: {
        options: {
            open: true,
            base: '<%= main.dist %>'
        }
    }
}

我已經創建了component.json文件:

{"data":[
    {
        "resource":"/bower_components",
        "config":"./bower_components"
    },
    {
        "resource":"/invoices",
        "config":"invoicesAppPathConfig.root"
    },
    {
        "resource":"/users",
        "config":"usersAppPathConfig.root"
    }
]}

並在Gruntfile.js中創建了此變量,請記住我需要迭代數據的內容:

var components = require('./components.json');
var data = components.data;

現在我有一個問題,如何在代碼中做到這一點?

middleware: function (connect) {
    return [
        connect.static('.tmp'),
        // Here comes the data iteration
        connect.static(secureAppPathConfig.app)
    ];
}

提前致謝。

你當然可以:

grunt.initConfig({
    components: grunt.file.readJSON('components.json'),
    [...]
});

有關grunt.file更多信息,請grunt.file此處

您還可以要求它:

var components = require('./components.json');

創建下一個變量:

var components = require('./components.json');
var data = components.data;
var arrayComponents = [];

然后在livereload的選項中,迭代json數據並將其添加到arrayComponents

middleware: function (connect){
    arrayComponents.push(connect.static('.tmp'));
    // The modules to be watched are added
    for(var i in data){
        arrayComponents.push(connect().use(data[i].resource, connect.static(data[i].config)));
    }
    arrayComponents.push(connect.static(secureAppPathConfig.app));
    return arrayComponents;
}

它有效,但也許不是最優雅的解決方案。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM