9

我已使用以下 (1.7) 自定义构建配置文件来构建我的发布文件夹。

var profile = {
basePath: "..",
action: "release",
cssOptimize: "comments",
mini: true,
optimize: "closure",
layerOptimize: "closure",
stripConsole: "all",
selectorEngine: "acme",
packages:[
    {
        name: "dojo",
        location: "./../../dojo"
    },

    {
        name: "dijit",
        location: "./../../dijit"
    },

    {
        name: "dojox",
        location: "./../../dojox"
    }
],

layers: {
    "dojo/dojo": {
        include: [
                            "dojo/dojo",
                            "dijit/form/Button",
                            "dojox/form/TimeSpinner"
                    ],
        customBase: true,
        boot: true
    }
},

resourceTags: {
    amd: function (filename, mid) {
        return /\.js$/.test(filename);
    }
} };

在我的 Web 应用程序中,我只使用了两个组件,一个是来自“dijit”包的 Button,另一个是来自“dojox”的 TimeSpinner。因此,我已将这两个组件包含在“dojo/dojo.js”文件中,它按我预期的方式工作。

但发布文件夹包含文件夹“dojo”、“dijit”和“dojox”以及很多文件。

大多数组件没有在我的 Web 应用程序中使用,但它们的文件存在于发布文件夹中。即使它们不会被加载到浏览器中(因为 AMD),我也不希望在我的发布文件夹中有这样的文件。

在我的颠覆中维护如此大量的文件是不必要的。

所以,我的问题如下:

  1. 如何从发布文件夹中删除“.uncompressed.js”文件?
  2. 如何从发布文件夹中删除未使用组件的文件、CSS、模板?

请帮我...

4

2 回答 2

4

您可以在 build.sh 的底部添加以下行

find . -type f -name '*.uncompressed.js' -print0 | xargs -0 rm -rdf

find . -type f -name '*.consoleStripped.js' -print0 | xargs -0 rm -rdf 
于 2012-06-02T09:33:58.110 回答
2

dojo 构建实用程序并不意味着分离文件子集,并且没有为此进行配置。

构建器进行压缩,它将遗留模块包装到 amd 样式的声明中,并以缓存模块加载方式组合层。

这意味着一旦您创建了 dojo/dojo,customBase(顺便说一句,这是非常高级的设置,小心使用)层 - 将构建一个依赖关系树。依赖树是一个文件列表,每个文件都被压缩并缝合在一起,如下所示;

// file: dojo/dojo.js
declare(
  {cache: 
     {
      "moduleDep_1": dojo.cache("moduleDep_1", {}),
      "moduleDep_2": dojo.cache("modu...", .. )
     }, "dojo/dojo", null, {

  dojo/dojo here

});

如果您的访问者有一个您遗漏的基本依赖项怎么办?

无论如何,较旧的构建实用程序有一个功能依赖列表,它在 1.7 构建实用程序中不存在。这会“拯救”你:)

如果您 100% 确定唯一需要的文件是您的 layerfile - 为什么不简单地将单个文件上传到您的 webhotel?

于 2012-05-21T13:33:33.243 回答