build - Dojo 1.8 和构建(或缺少)

标签 build dojo compilation

我真的不知道从哪里开始。

我浏览了每一篇教程、文章和博客文章,试图让 dojo 能够让它发挥作用,但我从来没有遇到过这样的问题,至少只是一点点。我发现文档和工作脚本的人之间存在激烈的争吵,但没有任何发布或概述。在 SO,我发现这是一个非常常见的问题,但有一半的时间没有解决。

免责声明:忘记 1.6。我从来没有用过1.6。因此,我在网上找到的一半资源都是无效的,我的书也是如此。我们开始吧。

问题 1

很多关于使用这种格式的帖子有什么区别:

dependencies = {
    stripConsole: "all",
    action: "release",
    optimize: "shrinksafe",
    // Omitted options...
    layers: [{
        name: "dojo.js",
        customBase : true,
            dependencies: [ 
              "dojox.gauges.AnalogNeedleIndicator",
              "myApp.smartmix"]           
        }
    ],
    prefixes: [
        [ "dijit", "../dijit" ], 
        [ "dojox", "../dojox" ],
        [ "myApp", "../../../myApp" ]
    ]
};

...vs 这种格式:

var profile = {
    basePath: './',
    stripConsole: 'all',
    selectorEngine: 'lite',
    layers: {
        'dojo/dojo': {
            include: ['dojo/dojo', 'dojo/domReady', 'dojo/_base/declare'],
            boot: true,
            customBase: true
        },
        'dgrid/dgrid': {
            include: ["dgrid/List", "dgrid/OnDemandGrid", "dgrid/Selection", "dgrid/Keyboard", "dgrid/test/data/perf"]
        }
    }
    // static-has-features removed
};

layers 对象在两者之间有两个非常重要的区别,要么 A)每个人似乎只是“知道”,没有任何理由或理性,或者 B)人们似乎只是“知道” ”。我还没有找到任何关于这两种语法(语法?语法?)之间差异的文章,这与新的 AMD 结构和构建系统的重写有关。

我见过的最接近的是对象名称无关紧要,声明也无关紧要。它可以是“全局”变量(省略 var 关键字),也可以不是,只要返回的对象包含必要的信息,名称就无关紧要。

第二种格式给我一个“意外字符串”错误,并且 99% 的时间都失败了,即使是复制/粘贴的配置文件也是如此。

问题 2

究竟需要什么?! Dojo 的文档说 package.json 和 appName.profile.js 文件是必需的,但在我见过的所有教程中,只需要和使用配置文件。因此,Dojo 的主要网站上有一半关于建筑的信息没有被使用。所以…………?

Dojo 网站说要使用 src 版本进行构建。 Nabble 的一个人说你必须得到 svn 版本,因为 src 版本已经“构建”了。

...那么谁先上呢?

问题 3

有没有人愿意分享一个工作目录结构和 profile.js 文件?我已经尝试了一切。我的意思是一切,得到一个构建。一个建议是使用一个空的配置文件对象。这行得通,而且没用。

另一个建议是使用 dojo 样板构建。如果任何更改破坏了模板,它有什么用? 你尝试了什么是一个有争议的问题,正如我所尝试的,用 Tony Stark 的话来说,“每个已知 [javascript 对象变体] 的每个排列。没有任何效果。”

我很快就会失去信心。不是因为经过数小时的反复试验我无法弄清楚,而是因为很多人都在同一条船上。下沉了。

最后一个问题

所以,我的最后一个请求是,请有人能解释一下这个构建系统是如何工作的,而不仅仅是指向在 Google 上可以找到的已经变紫的阅读和重新阅读链接的链接?

如何...您...配置 Dojo 构建配置文件...并执行它...没有错误?!这个系统的糟糕程度太疯狂了 A) 记录在案和 B) 实现,而我正在使用它 C) 教的。太累了。

我访问过的一些(许多)网站:

更新

非常感谢@xesxz 和@Craig Swing。经过一些小事后,我得到了一个构建配置文件,它可以提供我需要的东西!

最佳答案

What's the difference between a LOT of posts about using this format...

您的第一个示例是针对 Dojo 1.7 之前的构建。如果您使用的是 1.7 或更高版本,则需要第二个示例。

The Dojo site says to use the src release for builds. A guy at Nabble said you must get the svn version as the src version is already "built".

... so who's on first?

您需要来自 http://dojotoolkit.org/download/ 的 SDK

在页面上它被标记为“来源”。这包含一个包含所有构建脚本的 util 目录,以及包含非构建版本的 dojo 文件的其他目录。

Does anyone, anyone at all, have a working directory structure and profile.js file they'd care to share?

我正在从事的项目与@xesxz 发布的项目具有相似的结构。但是,我尝试使用 boot: true, customBase: true 没有成功。以下是我的个人资料。 (我的目录结构有点不同,所以路径与@xesxz 发布的不匹配)。

在我的应用程序中,我将包含以下内容

  • dojo/dojo.js
  • myCore/core.js
  • myAppModuleX/app.js,其中 X 是我在页面上使用的特定模块。

core.profile.js(用于构建)

var profile = (function(){
     var coreRequires = [
        "dojo/_base/declare",
        "dojo/_base/fx",
        "dojo/_base/lang",
        "dojo/currency",
        "dojo/fx",
        "dojo/number",
        "dojo/on",
        "dojo/query",

        "dijit/dijit",

        "myCore/ACoreWidget"
    ];

    return {
        basePath:       "./dojo-release-1.8.3-src",
        releaseDir:     "../../DEV-REL",
        action:         "release",
        cssOptimize:    "comments",
        selectorEngine: "acme",

        packages:[{
            name: "dojo",
            location: "dojo"
        },{
            name: "dijit",
            location: "dijit"
        },{
            name: "dojox",
            location: "dojox"
        },{
            name: "myCoreModule",
            location: "../myCore"
        },{
            name: "myAppModule1",
            location: "../myAppModule1"
        },{
            name: "myAppModule2",
            location: "../myAppModule2"
        }],

        layers: {
            "myCore/core": {
                include:    coreRequires
            },

            "myAppModule1/app": {
                include:    [
                    "myAppModule1/WidgetX"
                ],
                exclude: coreRequires
            },

            "myAppModule2/app": {
                include:    [
                    "myAppModule2/WidgetY"
                ],
                exclude: coreRequires
            }
        }
    };
})();

How... do you... configure a Dojo build profile... and execute it... without error?

我使用节点来构建。这将在包含构建配置文件的目录中执行。

node dojo-release-1.8.3-src/dojo/dojo.js load=build --profile core.profile.js --release --version=1.8.3

我的建议是尝试使用非常简单的单个自定义小部件来完成构建。如果这行得通,那么你真正的小部件

关于意外字符串

  • 您的所有小部件都使用新的 AMD 语法吗?
  • 你有 dgrid,但我相信它依赖于 put-selectorxStyle

关于build - Dojo 1.8 和构建(或缺少),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15404173/

相关文章:

javascript - onclick 在启用切换的 div 上触发拖动事件

javascript - 如何从 Dijit FilteringSelect 小部件中删除所有选项?

java - 使用 jni.h 在 C++ 中编译 java 方法时生成错误

c++ - 使用 Waf 在 Windows 上构建 NITRO NITF 库

javascript - 从字符串中获取 css 宽度

java - 使用 ANT 编译 JavaFX 代码

compilation - 使/生成文件 : realize that there is a new (not changed) source file

linux - 构建 caffe 时出错 - 找不到 -lhdf5_hl

android - 指示 Android Gradle 脚本删除未对齐的 apk 并清理 Artifact 文件

python - 将脚本添加到 build.gradle