【问题标题】:The curious case of /public/assets/ in a Meteor projectMeteor 项目中 /public/assets/ 的奇怪案例
【发布时间】:2020-07-15 08:23:23
【问题描述】:

在我的 Meteor 1.10.2 项目中,我在 /public/ 文件夹中创建了一个名为 assets 的文件夹。构建 Meteor 应用程序后,我发现此 assets 文件夹已复制到这些位置,作为 web.browser... 文件夹的直接子级:

/.meteor/local/build/programs/web.browser/assets/
/.meteor/local/build/programs/web.browser.legacy/assets

但是,如果我将文件夹重命名为 Assets(或者如果我给它提供任何其他名称),则在构建应用程序时,我会发现它位于 app 文件夹的更深处:

/.meteor/local/build/programs/web.browser/app/Assets/
/.meteor/local/build/programs/web.browser.legacy/app/Assets/

这背后的逻辑是什么?目的是什么?使用/public/assets/ 的文件夹的最佳做法是什么?用作/public/ 文件夹内的文件夹名称时,是否有任何其他词被给予特殊处理?

【问题讨论】:

    标签: meteor build hierarchy


    【解决方案1】:

    FWIW,这种行为是由流星工具捆绑器造成的:

    https://github.com/meteor/meteor/blob/release/METEOR%401.10.2/tools/isobuild/bundler.js#L719-L725

      setTargetPathFromRelPath(relPath) {
        // XXX hack
        if (relPath.match(/^(packages|assets|dynamic)\//)) {
          this.targetPath = relPath;
        } else {
          this.targetPath = files.pathJoin('app', relPath);
        }
    

    因此我们可以看到有 3 个特殊的目录名称表现出这种特殊行为:

    • 资产
    • 动态

    以公共资产为例:

    这些资产捆绑在构建中:

    对于“包”,虽然我们可以理解这是 Meteor 发送包的静态资产的方式(即当他们调用 api.addAssets() 时,我们也可以看到存在冲突的可能性,在(但不太可能)如果我们使用像“public/packages/my-package-name”这样的路径名。

    至于“资产”,最初的名称是“静态的”,但我认为它也没有公开记录。

    对于“动态”,我还不知道它的确切目的是什么,但我们可以看到它的内容是“javascript”类型(至少是 SVG 文件),而前两个作为“文本” /普通”。

    【讨论】:

      【解决方案2】:

      Meteor 所做的是多次构建您的项目。一次用于旧版 Web 浏览器,一次用于现代浏览器,还用于其他平台,例如 IOS 或 Android。正如您所观察到的,它在 .meteor/local 文件夹中完成所有这些操作。

      Meteor 有 /private 文件夹的概念,与 /public 类似,只不过 Meteor 将它们视为assets。这或许可以解释为什么您的文件夹会根据名称出现在不同的位置。

      我个人不会太担心 Meteor 是如何处理文件的,除非你想成为贡献者,在这种情况下,欢迎你四处闲逛:)

      【讨论】:

      • /private/ 文件夹中的项目位于 /.meteor/local/build/programs/server/assets/app 中,无法从浏览器访问。这是一个不同的问题。唯一常见的是名称assets。有关/private/Assets 全局的信息是公开的on the Meteor site。我在任何地方都没有找到关于/public/assets/ 的任何信息。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多