如何从 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" }
        ]
    };
})();

这是文件夹myapp内的package.json

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

这也是文件夹myapp内的myapp.profile.js

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文件仍在发布目录中。

如果您发现我的逻辑或我如何配置构建系统的任何错误,请告诉我。我正在使用 Dojo 1.9.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)/]
            ]
        }
    ]
};

如果有人能准确地指出我做错了什么,请分享。

最新更新