2016-05-20 9 views
1

У меня есть приложение aurelia, работающее в электроне. Мои исходные файлы являются машинописными, и у меня есть окружающая среда typings для электрона и узла.Aurelia: использование импорта es6 для электрона + машинопись

Потому что я знаю, что собираюсь для использования на электроне, я транслирую свой машинописный текст на es6 и загружаю модуль системы; это означает, что я могу превратить transpiler system.js с. Я использую system.js и jspm, потому что это подход Aurelia.

Так что в моих TS файлов: Я хотел бы быть в состоянии сделать:

import {remote} from 'electron'; 

К сожалению, system.js ничего не говорит о модуле электрона знаю и не во время выполнения. TypeScript, с другой стороны, совершенно счастлив, потому что я установил типизацию для электрона и узла; Я также получаю полный intellisense в VSCode.

примечание: если вы пытаетесь сделать var electron = require('electron'); в заголовке, system.js мешает ему, и он не загружается. You can place that 'require('electron')' within a class or function and it will work, но я не считаю этот идеал.

Вопрос:Как я могу заставить system.js правильно вернуть модуль «электрон», который доступен только при запуске приложения в самом элементе?

ответ

0

Раствор --hopefully есть лучший way-- я придумал это Призонная шайба модуль электронов для system.js и связать его непосредственно к содержанию require('electron'):

электрон. JS

System.register([], function (exports_1, context_1) { 
    "use strict"; 
    var __moduleName = context_1 && context_1.id; 
    var electron; 
    return { 
     setters: [], 
     execute: function() { 
      electron = require('electron'); 
      exports_1("default", electron); 

      Object.keys(electron).forEach(function (key) { 
       exports_1(key, electron[key]); 
      }); 
     } 
    } 
}); 

это эффективно оборачивает внутренний модуль электронного и позволяет system.js знать об этом. Оно работает; но, надеюсь, есть более элегантный/встроенный способ, о котором знают другие.

Нет необходимости в каких-либо сопоставлениях или изменениях типа typtpt, поскольку import {remote} from 'electron' попытается разрешить electron.js в качестве крайней меры.

+0

выглядит как лучший способ со следующей версией jspm: https://github.com/jspm/jspm-cli/issues/1837 –