编译Elm时指定特定的模块系统(与运行时检查)

时间:2016-05-15 23:28:29

标签: elm elm-make

是否可以选择让Elm知道您在编译期间定位的模块系统?例如。类似--target标志的东西。我必须承认,我没有那么多地挖掘elm-make

目前似乎它只在运行时发生:

对于我的情况,我是:

  • 使用Electron定义自己的module对象全局window
  • 仅对项目的一部分使用Elm(参见HTML interop)。

默认情况下,compiled output默认在module.exports上公开Elm:

if (typeof define === "function" && define['amd'])
{
  define([], function() { return Elm; });
  return;
}

if (typeof module === "object")
{
  module['exports'] = Elm;
  return;
}

var globalElm = this['Elm'];
if (typeof globalElm === "undefined")
{
  this['Elm'] = Elm;
  return;
}

在调试工具中:

TronWM exposed in module.exports vs window

相反,我希望它在this / window上公开,而不是用Elm对象覆盖module.exports

我能够破解滥用AMD检查的解决方案:

    <script>
    window.define = (arr, fn) => {
        const Elm = fn();
        window.Elm = Elm;
    };
    window.define.amd = true;
    </script>
    <script src="build/tronwm.js"></script>
    <script>
    const node = document.getElementById('elm-render');
    const app = window.Elm.TronWM.embed(node);
    </script>

enter image description here

现在可以使用,但是对其他解决方案感到好奇。

1 个答案:

答案 0 :(得分:1)

截至0.18,没有。 Elm编译器不了解JS Loaders等的细节。