Как исключить файлы из системы сборки Dojo?

Я слежу за официальной страницей документации по этой теме, но не могу настроить ее на игнорирование .txt файлы.

у меня есть all.profile.js в корне моего проекта:

var profile = (function(){
    return {
        basePath: "./",
        releaseDir: "../web",
        action: "release",
        layerOptimize: "closure",
        optimize: "closure",
        cssOptimize: "comments",
        mini: true,
        stripConsole: "all",

        packages: [
            { name: "myapp", location: "myapp" }
        ]
    };
})();

И это package.json внутри папки myapp:

{
    "dojoBuild": "myapp.profile.js",
    "name": "my-app",
    "description": "This is My App",
    "version": "1.0",
    "main": "src"
}

И это myapp.profile.js также внутри папки myapp:

var profile = (function(){
    return {
        // don't need to do anything on the 'test' folder so don't define it on the trees.
        trees: [
            ["libs","libs",/txt$/], // ignore .txt files -> DOESN'T WORK!
            ["src","src",/txt$/]    // ignore .txt files -> DOESN'T WORK!
        ],
        resourceTags: {
            test: function(filename, mid){
                console.log("[test] filename: ",filename);
                return filename.indexOf("test/") !== -1;
            },
            copyOnly: function(filename, mid){
                //console.log("[copyOnly] mid: ",mid);
                return false;
            },
            miniExclude: function (filename, mid) {
                console.log("[miniExclude] filename: ",filename);
                return mid in {
                    'myapp/myapp.profile': 1,
                    'myapp/package.json': 2
                } || mid.indexOf(".txt") !== -1; // .txt are not ignored so exclude them...
            },
            amd: function(filename, mid) {
                //console.log("[amd] mid: ",mid);
                // myapp is not AMD but this will 'convert' it
                return false;
            }
        }
    };
})();

Наконец, это структура папок:

web_dev/
-- myapp/
---- libs/
---- src/
---- test/
---- myapp.profile.js
---- package.json
-- all.profile.js

Инструмент сборки работает нормально, он читает и обрабатывает все файлы, кроме .txt файлы все еще находятся в выпуске dir.

Пожалуйста, дайте мне знать, если вы обнаружите какие-либо ошибки в моей логике или как я настраиваю систему сборки. Я использую Dojo 1.9.1.

Заранее спасибо.

1 ответ

Решение

Я не уверен, что не так с моим первоначальным сценарием, но вот изменения, которые я сделал, чтобы получить желаемый результат:

  1. Переместить trees декларация от myapp.profile.js в all.profile.js внутри определения пакета "myapp".
  2. Вместо указания корня деревьев, проверьте все и исключите соответственно: [".", ".", /(\/\.)|(~$)|(test|txt)/]

Финал all.profile.js:

var profile = {
    basePath: "./",
    releaseDir: "../web",
    releaseName: "built",
    action: "release",
    layerOptimize: "closure",
    optimize: "closure",
    cssOptimize: "comments",
    mini: true,
    stripConsole: "all",

    packages: [
        {
            name: "myapp",
            location: "myapp",
            trees: [
                // don't bother with .hidden, tests and txt.
                [".", ".", /(\/\.)|(~$)|(test|txt)/]
            ]
        }
    ]
};

Если кто-то может точно указать, что я делал неправильно, пожалуйста, поделитесь.

Другие вопросы по тегам