【问题标题】:Can't figure out dojo build system at all, minimal working example?根本无法弄清楚 dojo 构建系统,最小的工作示例?
【发布时间】:2015-10-02 18:03:03
【问题描述】:

也许我只是笨,但我完全看不懂这篇文章:https://dojotoolkit.org/documentation/tutorials/1.10/build/

在任何地方都有工作示例或更好的文章吗?我打算用更好的说明在谷歌上搜索其他基于 RequireJS 的构建工具。我能够在大约 15 分钟内启动 r.js,但它似乎不适用于 dojo。

我的项目文件结构如下:

  • 道场
  • dijit
  • dojox
  • 应用(包含此应用的所有自定义 AMD 模块)
  • lib(非 AMD js 文件)
  • main.js(主启动文件)
  • app.profile.js
  • package.json

我只想将 main.js、app 中的所有内容以及我正在使用的任何 dojo 模块连接到一个文件中。应该不会太难!但它只是复制发布文件夹中的每个 JS 文件,仅此而已。它似乎没有连接任何东西。

这是我的 app.profile.js:

var profile = (function(){
    var copyOnly = function(filename, mid) {
            var list = {
                "./app.profile": true,
                "./package.json": true
            };
            return (mid in list) ||
                /^\.\/lib\//.test(filename) ||
                /(png|jpg|jpeg|gif|tiff|html)$/.test(filename);
        };


    return {
        basePath: "./",
        releaseDir: "./build",
        releaseName: "prod",
        action: "release",
        layerOptimize: "closure",
        optimize: "closure",
        cssOptimize: "comments",
        mini: true,
        stripConsole: "warn",
        selectorEngine: "lite",

        packages:[{
            name: "dojo",
            location: "dojo"
        },{
            name: "dijit",
            location: "dijit"
        },{
            name: "dojox",
            location: "dojox"
        },{
            name: "app",
            location: "app"
        }],

        layers: {
            "dojo/dojo": {
                include: [ "dojo/dojo", "main" ],
                customBase: true,
                boot: true
            }
        },

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

【问题讨论】:

  • 您的图层中列出了"main",但您的意思可能是"app/main"build-report.txt 可能在查找 main 包时出错。除此之外,这在概念上应该有效。修复include,再次尝试构建,然后查看dojo/dojo.jsdojo/dojo.js.uncompressed.js
  • main.js 是我之前用来启动应用程序的文件,它位于根目录中。它是一个简短的脚本,需要应用程序/应用程序(和一些其他对象),并实例化应用程序实例,然后告诉应用程序启动(解析 dojo 小部件等)。也许这是错误的?问题是我不知道定义层实际上是告诉编译器做什么。
  • 定义一个层是告诉构建工具将几个模块连接在一起。 include 中的东西是每个都应该爬取的依赖,它们所有的传递依赖也会被包含在层中。无论如何,回到你的main 文件,看看它可能有助于理解你想要做什么。无论哪种方式,构建脚本和加载器都只能发现包中的模块(或在paths 中定义,但建议使用packages)。理想情况下,您的应用程序的入口点应该是一个通过 AMD 加载器加载的模块,就像其他任何模块一样。

标签: dojo dojo-build


【解决方案1】:

我不确定您的具体问题/问题是什么,但我有两个建议:

  1. 这里有一些其他的(也许更容易理解)教程:

  2. Google 搜索“Dojo”“ShrinkSafe”

'希望有帮助!

【讨论】:

  • 谢谢,我在我的问题中添加了细节。我遵循了文档并有一个相当复杂的 app.profile.js 文件。当我运行构建工具时,它只是将所有源文件复制到发布目录中,它没有连接任何东西。
  • Shrinksafe 已被弃用,取而代之的是 Closure 编译器或 Uglify,无论哪种方式,only 都代表构建过程的缩小部分(即optimize 和 @987654324 @)。此外,该 IBM 文章写于 2011 年,在 1.7 和 AMD 更新之前,该更新还弃用了几个旧的构建配置文件属性。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-05-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-04-03
相关资源
最近更新 更多