2015-05-07 7 views
5

Sto cercando di ottenere una build per Aurelia su VSO Hosted Build Controller. Ho creato un piccolo script PowerShell per eseguire i seguenti comandiAurelia build su VSO Hosted Build Controller

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

devo obiettivi AfterBuild per copiare i jspm_packages e le cartelle dist alla mia cartella _PublishedWebsites.

npm installazione viene eseguita correttamente, ma quando si tratta di JSPM cc (se mi tolgo la cc JSPM e farlo funzionare JSPM installare y), non riesce il tentativo di questo

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. 

faccio capire il JSPM non è installato globalmente, dal momento che è un controller ospitato, non posso davvero installarlo a livello globale. La mia domanda è, come faccio a lavorare su questo senza avere un'installazione globale jspm? C'è una soluzione alternativa in cui non è necessario migrare il file di configurazione?

+0

Hai mai trovare una soluzione con il regolatore di VSO? – bychkov

+0

risposta semplice. Non è possibile sul controller di generazione ospitato. Sono passato a Typescript e uso requirejs. Sto usando i file aurelia TS da qui https://github.com/cmichaelgraham/aurelia-typescript –

risposta

1

Se sul computer sono richiesti privilegi amministrativi per l'installazione di un pacchetto, non è possibile eseguirlo in build ospitata. In questo caso dovrai creare la tua macchina di compilazione. È qualcosa che speriamo di risolvere in futuro.

Detto questo, ecco cosa ha fatto una persona per impostare Aurelia: http://fabhojs.blogspot.com/2015/03/aurelia-app-skeleton-yeoman-generator.html (da questo question). Questi passaggi sono diversi e possono aiutare.

+0

Grazie per la risposta. L'ho fatto funzionare prima con solo grugnito. è l'installazione di jspm che è il problema. Il link che hai inviato non parla di build automatiche. Sto provando a configurare una macchina di compilazione on premise, ma sto correndo anche con problemi. –

5

Anche se non è possibile installare ed eseguire il CLI JSPM sul di compilazione ospitato, è possibile corsa JSPM attraverso nodo stesso.

Prima di tutto, assicurati che jspm sia installato - quale è il tuo script PowerShell. In alternativa, è possibile utilizzare "Attività di installazione npm di VSO Build", a condizione che jspm sia nel file package.json. enter image description here

Ho usato Gulp per eseguire jspm tramite nodo. Non sono sicuro se questo è il modo migliore per fare questo passo, ma funziona ... Ho usato "compito Gulp" di VSO

enter image description here

Ecco i bit rilevanti da 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']); 
+0

interessante. Non ho mai pensato di farlo. È qualcosa che fai attualmente? –

+1

sì. Stavo avendo lo stesso problema come te, compreso il non aver trovato buone risposte. La soluzione è venuta da me dopo aver esaminato cosa sta facendo la CLI sul mio computer locale visualizzando il contenuto del mio file '... \ AppData \ Roaming \ npm \ jspm.cmd'. Esegue semplicemente il file jspm.js utilizzando il nodo. So che il nodo è installato sull'host di compilazione VSO, quindi ho fatto un tentativo. –

+0

Ho intenzione di provare questo. Se funziona fratello, avresti salvato la mia squadra molto tempo! –

2

Capisco che jspm non è installato a livello globale, poiché è un controller ospitato, non posso davvero installarlo a livello globale.

Sembra che questo non sia vero (almeno al momento). È possibile installare jspm globalmente su un controller ospitato.

sono stato in grado di risolvere questo con un processo di compilazione che assomiglia a questo:

Build Steps

  1. npm installare
  2. npm installare JSPM -g
  3. nodo C: \ NPM \ Modules \ node_modules \ jspm \ jspm.js installazione

1) Installa tutte le dipendenze locali da om my package.json.2) Installa una versione globale di JSPM 3) Evoca dalla posizione di installazione globale

Mi sono reso conto dalla risposta di M Falanga che il nodo era ovviamente nel percorso del controller in modo che potessi chiamarlo da Powershell/riga di comando. La posizione di installazione JSPM globale che ho trovato osservando i log di debug della build. Nota per gli implementatori, ti consigliamo di assicurarti che la directory di lavoro per i passaggi 1 e 3 sia impostata su dove si trova il tuo package.json.

soluzione alternativa

non ho ancora testato questa opzione successiva in una costruzione, ma si dovrebbe essere in grado di saltare i passaggi di generazione in più e basta usare gli script sono dotate di NPM per fare il JSPM installazione. In questo caso non avrai bisogno del passaggio di installazione di NPM né del precedente passaggio del nodo.

Nella tua package.json avrete bisogno la seguente voce script:

"keywords": [...], 
    "scripts": { 
    "postinstall": "./node_modules/.bin/jspm install -y" 
    }, 
    "jspm": {... 
+0

Questo ha funzionato per me con Angular 2, grazie. – lintmouse

+0

Funziona anche per me !! Wow! –

Problemi correlati