Пользовательские компоненты пакета Aurelia

Я создал SPA, используя Aurelia с typescript и WebApi. Я хочу связать все с помощью aurelia-cli, чтобы минимизировать запрос и повысить производительность доступа. У меня следующая конфигурация:

var aurelia = require("aurelia-cli");

var bundleConfig = {
    js: {
        "Scripts/aurelia-bundle": {
            modules: [ 
                "github:aurelia/*",
                "Components/**/*.js"
            ],
            options: {
                inject: true,
                minify: true
            }
        }
    },
    template: {
        "Scripts/aurelia-bundle": {
            pattern: "Components/**/*.html",
            options: {
                inject: true
            }
        }
    }
};

aurelia.command("bundle", bundleConfig);

Базовым компонентом будет:

import {bindable, inject} from "aurelia-framework";

export class Home {

    // Custom properties

    constructor() {
      // Implementation
    }

    // Other methods
}

Все мои views и viewmodels расположены внутри Components. Если я удалю "Components/**/*.js" из импорта модуля, пакет завершится и создаст связанный файл js. Если я оставлю эту строку там, я получу следующую ошибку:

info: Creating bundle ...

err  Error: ENOENT, open 'C:\Work\aurelia-framework.js'
         at Error (native) C:\Work\node_modules\jspm\node_modules\systemjs-builder\lib\builder.js:23
  throw new Error('Unhandled promise rejection.\n' + reason && reason.stack ||
        ^
Error: Error: ENOENT, open 'C:\Work\aurelia-framework.js'
    at Error (native)
    at C:\Work\node_modules\jspm\node_modules\systemjs-builder\lib\builder.js:23:9
    at Object.lib$rsvp$events$$default.trigger (C:\Work\node_modules\jspm\node_modules\rsvp\dist\rsvp.js:245:13)
    at null._onTimeout (C:\Work\node_modules\jspm\node_modules\rsvp\dist\rsvp.js:779:47)
    at Timer.listOnTimeout (timers.js:119:15)

Я предполагаю, что проблема в том, что aurelia-cli не видит импорт aurelia-framework из файла typescript, но он отлично компилируется и транспилируется.

Итак, мой вопрос: как я могу включить свои пользовательские компоненты в комплект?


person Laurentiu Stamate    schedule 02.09.2015    source источник
comment
возможно, это   -  person Tj Gienger    schedule 02.09.2015
comment
Это не является проблемой. Я попытался поместить пустые файлы typescript в подкаталоги в папке Components, и команда пакета работает отлично.   -  person Laurentiu Stamate    schedule 02.09.2015


Ответы (1)


Проблема заключалась в том, что aurelia-framework и aurelia-router не включались в package.json, а созданный в результате файл config.js не знал во время сборки, что означает import {inject} from "aurelia-framework". Поэтому я добавил эту строку в package.json:

"aurelia-framework": "github:aurelia/[email protected]",
"aurelia-router": "github:aurelia/[email protected]"

и когда я запустил aurelia bundle --force, он успешно собрался.

К сожалению, aurelia-cli устаревает в пользу другого инструмента объединения (yeei).

person Laurentiu Stamate    schedule 03.09.2015