Сборка Aurelia на VSO Hosted Build Controller

Я пытаюсь собрать сборку для Aurelia на VSO Hosted Build Controller. Я создал небольшой скрипт powershell для запуска следующих команд.

npm install
.node_modules/.bin/jspm cc
.node_modules/.bin/jspm install -y
.node_modules/.bin/gulp build

У меня есть цели AfterBuild для копирования папок jspm_packages и dist в мою папку _publishedWebsites.

npm install работает нормально, но когда дело доходит до jspm cc (если я удалю jspm cc и позволю ему запустить jspm install -y), попытка выполнить это не удастся.

jspm cc

          Migrating global jspm folder from C:\Users\buildguest\.jspm to C:\Users\buildguest\AppData\Local\.jspm...
          Copying configuration...

     err  Error migrating to new jspm folder
 2>EXEC : error : ENOENT, no such file or directory 'C:\Users\buildguest\.jspm\config' [d:\a\src\WebGUI\OwinAureliaScaffold\OwinAureliaScaffold.csproj]
              at Object.fs.openSync (evalmachine.<anonymous>:427:18)
              at Object.fs.readFileSync (evalmachine.<anonymous>:284:15)
              at Object.<anonymous> (d:\a\src\WebGUI\OwinAureliaScaffold\public\node_modules\jspm\lib\global-config.js:36:24)
              at Module._compile (module.js:456:26)
              at Object.Module._extensions..js (module.js:474:10)
              at Module.load (module.js:356:32)
              at Function.Module._load (module.js:312:12)
              at Module.require (module.js:364:17)
              at require (module.js:380:17)
              at Object.<anonymous> (d:\a\src\WebGUI\OwinAureliaScaffold\public\node_modules\jspm\lib\registry.js:19:20)
     ok   Loader file cache cleared.
     ok   Package cache cleared.

Я понимаю, что jspm не установлен глобально, поскольку это размещенный контроллер, я не могу установить его глобально. Мой вопрос: как мне справиться с этим без глобальной установки jspm? Есть ли обходной путь, при котором не нужно переносить файл конфигурации?


person Sujesh Arukil    schedule 07.05.2015    source источник
comment
Вы когда-нибудь находили решение с контроллером VSO?   -  person bychkov    schedule 30.06.2015
comment
простой ответ. Вы не можете на размещенном контроллере сборки. Я перешел на Typescript и использую requirejs. Я использую файлы aurelia TS отсюда github.com/cmichaelgraham/aurelia-typescript.   -  person Sujesh Arukil    schedule 30.06.2015


Ответы (3)


Несмотря на то, что вы не можете установить и запустить интерфейс командной строки jspm на размещенном агенте сборки, вы можете запустить jspm через сам узел.

Во-первых, убедитесь, что jspm установлен, что и делает ваш скрипт powershell. В качестве альтернативы вы можете использовать «задачу установки npm» VSO Build, при условии, что jspm находится в вашем package.json файле. введите описание изображения здесь

Я использовал Gulp для выполнения jspm через node. Я не уверен, что это лучший способ сделать этот шаг, но он работает... Я использовал задачу VSO "Gulp".

введите описание изображения здесь

Вот соответствующие биты из gulpfile.js:

var gulp = require('gulp'),
    exec = require('child_process').exec;

//#region Build Tasks
gulp.task('build:jspm', function (cb) {
    exec("node ./node_modules/jspm/jspm.js install", function(err, stdout, stderr) {
        console.log(stdout);
        console.error(stderr);
        cb(err);
    });
});

gulp.task('_build', ['build:jspm']);
person M Falanga    schedule 24.09.2015
comment
интересно. Никогда не думал об этом. Это то, чем вы сейчас занимаетесь? - person Sujesh Arukil; 25.09.2015
comment
да. У меня была та же проблема, что и у вас, в том числе я не нашел хороших ответов. Решение пришло ко мне после того, как я посмотрел, что делает CLI на моем локальном компьютере, просмотрев содержимое моего файла ...\AppData\Roaming\npm\jspm.cmd. Он просто запускает файл jspm.js, используя node. Я знаю, что этот узел установлен на хосте сборки VSO, поэтому я попробовал. - person M Falanga; 25.09.2015
comment
Я собираюсь попробовать это. Если бы это сработало, брат, ты бы сэкономил моей команде много времени! - person Sujesh Arukil; 25.09.2015
comment
Как вы обходили проблемы с ограничением скорости от GitHub? - person James Reategui; 12.11.2015

Я понимаю, что jspm не установлен глобально, поскольку это размещенный контроллер, я не могу установить его глобально.

Похоже, что это не так (по крайней мере, в настоящее время). Вы можете установить jspm глобально на размещенном контроллере.

Я смог решить эту проблему с помощью процесса сборки, который выглядит следующим образом:

Этапы построения

  1. установка нпм
  2. установка npm -g jspm
  3. узел C:\NPM\Modules\node_modules\jspm\jspm.js установить

1) Устанавливает все локальные зависимости из моего package.json. 2) Устанавливает глобальную версию JSPM 3) Вызывает ее из глобального места установки

Из ответа M Falanga я понял, что node явно находится на пути контроллера, поэтому я могу вызвать его из Powershell/командной строки. Глобальное расположение установки JSPM, которое я нашел, просматривая журналы отладки сборки. Примечание для разработчиков: вам нужно убедиться, что ваш рабочий каталог для шагов 1 и 3 установлен там, где находится ваш package.json.

Альтернативное решение

Я еще не тестировал этот следующий вариант в сборке, но вы сможете пропустить дополнительные шаги сборки и просто использовать функцию сценариев NPM для установки JSPM. В этом случае вам не понадобится ни шаг установки NPM, ни шаг запуска узла, описанный выше.

В вашем package.json вам понадобится следующая запись скрипта:

  "keywords": [...],
  "scripts": {
    "postinstall": "./node_modules/.bin/jspm install -y"
  },
  "jspm": {...
person Robb Vandaveer    schedule 08.07.2016
comment
У меня тоже работает!! Ух ты! - person Mr. Young; 22.09.2016

Если для установки пакета на компьютере требуются права администратора, вы не сможете сделать это в размещенной сборке. В этом случае вам придется создать собственную машину сборки. Это то, что мы надеемся решить в будущем.

Тем не менее, вот что сделал один человек, чтобы настроить Aurelia: http://fabhojs.blogspot.com/2015/03/aurelia-app-skeleton-yeoman-generator.html (из этого вопрос). Эти шаги отличаются и могут помочь.

person Buck Hodges    schedule 08.05.2015
comment
Благодарю за ваш ответ. Я заставил его работать раньше, просто ворча. проблема в установке jspm. Присланная вами ссылка не говорит об автоматизированных сборках. Я пытаюсь настроить локальную машину для сборки, но и там возникают проблемы. - person Sujesh Arukil; 08.05.2015