首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基于VSO Hosted build Controller的Aurelia构建

基于VSO Hosted build Controller的Aurelia构建
EN

Stack Overflow用户
提问于 2015-05-07 20:43:48
回答 3查看 1.5K关注 0票数 5

我正在尝试获得一个在VSO托管构建控制器上的Aurelia的构建。我创建了一个小的powershell脚本来运行以下命令

代码语言:javascript
复制
npm install
.node_modules/.bin/jspm cc
.node_modules/.bin/jspm install -y
.node_modules/.bin/gulp build

我有要将jspm_packages和dist文件夹复制到我的_publishedWebsites文件夹的AfterBuild目标。

npm install运行得很好,但是当涉及到jspm cc时(如果我删除jspm cc并让它运行jspm install -y),它尝试这样做会失败。

代码语言:javascript
复制
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安装,我如何解决这个问题?是否有不需要迁移配置文件的解决方法?

EN

回答 3

Stack Overflow用户

发布于 2015-09-24 23:32:51

即使您不能在托管构建代理上安装和运行jspm CLI,您也可以通过节点本身运行jspm。

首先,确保安装了jspm -您的powershell脚本也安装了jspm。另外,您也可以使用VSO Build的"npm install task",前提是jspm位于package.json文件中。

我使用Gulp通过node执行jspm。我不确定这是不是完成这一步的最好方法,但它是有效的。我用的是VSO的"Gulp任务“

下面是来自gulpfile.js的相关代码

代码语言:javascript
复制
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']);
票数 5
EN

Stack Overflow用户

发布于 2016-07-09 00:19:57

我知道jspm不是全局安装的,因为它是一个托管控制器,所以我不能真正地全局安装它。

这似乎不是真的(至少目前是这样)。您可以在托管控制器上全局安装jspm。

我能够通过一个构建过程来解决这个问题,如下所示:

  1. npm install
  2. npm install -g jspm
  3. node C:\NPM\Modules\node_modules\jspm\jspm.js install

1)从我的package.json安装所有本地依赖项。2)安装JSPM的全局版本3)从全局安装位置调用它

我从M Falanga的回答中意识到,节点显然在控制器的路径中,所以我可以从Powershell/命令行调用它。我在查看构建的调试日志时找到的全局JSPM安装位置。实现者请注意,您需要确保将步骤1和3的工作目录设置为package.json所在的位置。

替代解决方案

我还没有在构建中测试下一个选项,但是您应该能够跳过额外的构建步骤,只使用NPM的脚本特性来执行JSPM安装。在这种情况下,您将不需要执行上面的NPM install步骤或Run node步骤。

在package.json中,您将需要以下脚本条目:

代码语言:javascript
复制
  "keywords": [...],
  "scripts": {
    "postinstall": "./node_modules/.bin/jspm install -y"
  },
  "jspm": {...
票数 2
EN

Stack Overflow用户

发布于 2015-05-09 02:27:10

如果需要计算机上的管理权限才能安装包,则无法在托管构建中执行此操作。在这种情况下,您必须创建自己的构建机器。这是我们希望在未来解决的问题。

也就是说,下面是一个人用来设置Aurelia的方法:http://fabhojs.blogspot.com/2015/03/aurelia-app-skeleton-yeoman-generator.html (来自这个question)。这些步骤是不同的,可能会有所帮助。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30101421

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档