结合Aurelia构建版本和单元测试的推荐方法

问题描述 投票:2回答:1

使用CLI(au new)创建新的Aurelia项目时,启用了单元测试和构建修订。我收到一条警告信息,业力无法找到vendor-bundle.jsapp-bundle.js

14 03 2017 08:54:27.260:WARN [观察者]:模式“C:/Temp/AureliaTest/scripts/vendor-bundle.js”与任何文件都不匹配。

14 03 2017 08:54:27.266:WARN [观察者]:模式“C:/Temp/AureliaTest/scripts/app-bundle.js”与任何文件都不匹配。

我知道bundle名称应该包含像vendor-bundle-{hash}.js这样的哈希值,但是让karma知道bundle的名称是什么的推荐方法是什么?

我更新到最新的Aurelia CLI(0.26.1)并使用以下步骤创建了一个新项目:

  • 应用名称:测试
  • 自定义设置
  • 打字稿
  • 默认模板
  • CSS处理器:Sass
  • 单元测试:是的
  • 默认代码编辑器:VS代码
  • 创建项目:是的
  • 安装依赖项:是的

我在aurelia.json中启用了构建版本:http://aurelia.io/hub.html#/doc/article/aurelia/framework/latest/the-aurelia-cli/8

"options": {
  "minify": "stage & prod",
  "sourcemaps": "dev & stage",
  "rev": true
}

Aftwerwards我运行构建(au build)并运行单元测试(au test

这导致以下代码示例:https://github.com/jimmyvdberg/aurelia-revisions-and-unit-tests

aurelia aurelia-cli aurelia-framework
1个回答
0
投票

我遇到过同样的问题。我通过更改karma.conf.js为我解决了这个问题,并删除了每个构建中创建的bundle文件。

karma.conf.js更改:

const scriptsFolder = './scripts/';
const fs = require('fs');

let appSrc = fs.readdirSync(scriptsFolder).filter(fn => (fn.startsWith('app-bundle') || fn.startsWith('vendor-bundle')) && !fn.endsWith('.map')).map(fn => path.join(output, fn));

console.log('appSrc', appSrc);

// configTarget from aurelia.json is vendor-bundle.js
// let entryIndex = appSrc.indexOf(path.join(output, project.build.loader.configTarget));
let entryIndex = appSrc.indexOf(appSrc.filter(f => f.includes('vendor-bundle'))[0]);

build.ts的变化

import * as clean from './clean';

....

export default gulp.series(
  clean.deleteScripts, // added this one
  readProjectConfiguration,
  gulp.parallel(transpile, processMarkup, processCSS, copyFiles),
  writeBundles
);

clean.ts //我自己清理的东西

import * as gulp from 'gulp';
import * as del from 'del';

export default gulp.series(
  deleteScripts
);

export function deleteScripts() {
  return del([
    './scripts/**/*.*',
    '!./scripts/modernizr-custom.js',
    '!./scripts/oidc-client.min.js',
    ], {dryRun: false}).then(paths => {
    console.log('Deleting following Files and folders:\n', paths.join('\n'));
  });
}

在CLI中有这样的东西会很高兴。对于不同的环境运行测试并且CLI无法按预期工作,这非常令人困惑。 Aurelia正在构建任务中复制环境文件,您可以在应用程序的环境中编写不同的行为。所有这些当然应该是可靠的

© www.soinside.com 2019 - 2024. All rights reserved.