Karma - 我可以使用脚本标签而不是 karma.config.files 吗?
Karma - can I use script tags instead of karma.config.files?
Karma 提供了一个名为 customContextFile
的配置选项,它允许用户指定 Karma 将提供的 HTML 文件。
我的问题是 - 我可以直接将 <script>
标签添加到自定义上下文文件吗?还是我必须使用业力配置中的 files
属性 才能在浏览器中加载文件?
更多信息
我想将脚本标签直接放在我的 customContextFile 上,使其看起来类似于 index.html,列出所有供应商文件等。
但是,karma 列出了我添加到自定义上下文文件中的脚本标记的 404。我怀疑这是因为我没有在业力配置文件 属性 中列出这些文件。或者我的脚本标签中的路径有误?
目录结构
.
|--app
| |--mock
| | |--*.json
| |--scripts
| | |--*.ts
| |--vendor
| | |--*.js
|
|--config
| |--karma.conf.js
|
|--dist
| |--mock
| | |--*.json
| |--scripts
| | |--*.js
| |--tests
| | |--*.js
| |--vendor
| | |--*.js
| |--specRunner.html
|
config/karma.conf.js
config.set({
basePath: '../dist',
frameworks: ['jasmine'],
reporters: ['dots'],
port: 9876,
colors: false,
logLevel: config.LOG_DEBUG,
browserNoActivityTimeout: 100000,
plugins: [
'karma-chrome-launcher',
'karma-jasmine'
],
customContextFile: 'specRunner.html',
files: [
{pattern: 'vendor/**/*.js', included: false, watched: false},
{pattern: 'mock/**/*.json', included: false, watched: false},
{pattern: 'scripts/**/*.js', included: false},
{pattern: 'tests/**/*.js', included: false}
]
...
dist/specRunner.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Spec Runner</title>
</head>
<body>
<h1>Thank you for reading this far</h1>
<h2>Karma 404s with each of these</h2>
<script src="jQuery/jquery-1.7.min.js"></script>
<script src="vendor/jQuery/jquery-1.7.min.js"></script>
<script src="dist/vendor/jQuery/jquery-1.7.min.js"></script>
...etc...
<script src="scripts/app.js"></script>
<script src="scripts/x.module.js"></script>
<script src="scripts/y.module.js"></script>
<script src="scripts/z.module.js"></script>
...etc...
</body>
</html>
Karma 配置中的 files
选项执行多个作业。它的工作之一是告诉 Karma 要创建什么 script
元素。然而,它的另一项工作是告诉 Karma 服务什么脚本。您不能只是手动将 script
元素放入您的 HTML 中并称之为完成。您需要配置 Karma 以便提供文件,因为如果它们未在此处列出,Karma 将不会提供它们。
您可以在配置中使用这样的模式来告诉 Karma 提供文件但不将它们 (included: false
) 作为 script
元素包含在页面上:
files: [
{ pattern: "vendor/**/*.js", included: false },
{ pattern: "scripts/**/*.js", included: false },
// ...
]
还指出所有内容都将在浏览器端的 /base
下提供。因此文件 scripts/app.js
将作为 /base/scripts/app.js
使用,后一个路径是您在 script
中或任何时候引用该文件时必须使用的路径。
如果您对 Karma 看到的内容及其服务方式感到困惑,您可以在浏览器中进入调试模式并检查变量 __karma__.files
。它是 Karma 能够提供的文件名映射:键是文件名,每个键的值是文件内容的校验和。
Karma 提供了一个名为 customContextFile
的配置选项,它允许用户指定 Karma 将提供的 HTML 文件。
我的问题是 - 我可以直接将 <script>
标签添加到自定义上下文文件吗?还是我必须使用业力配置中的 files
属性 才能在浏览器中加载文件?
更多信息
我想将脚本标签直接放在我的 customContextFile 上,使其看起来类似于 index.html,列出所有供应商文件等。
但是,karma 列出了我添加到自定义上下文文件中的脚本标记的 404。我怀疑这是因为我没有在业力配置文件 属性 中列出这些文件。或者我的脚本标签中的路径有误?
目录结构
.
|--app
| |--mock
| | |--*.json
| |--scripts
| | |--*.ts
| |--vendor
| | |--*.js
|
|--config
| |--karma.conf.js
|
|--dist
| |--mock
| | |--*.json
| |--scripts
| | |--*.js
| |--tests
| | |--*.js
| |--vendor
| | |--*.js
| |--specRunner.html
|
config/karma.conf.js
config.set({
basePath: '../dist',
frameworks: ['jasmine'],
reporters: ['dots'],
port: 9876,
colors: false,
logLevel: config.LOG_DEBUG,
browserNoActivityTimeout: 100000,
plugins: [
'karma-chrome-launcher',
'karma-jasmine'
],
customContextFile: 'specRunner.html',
files: [
{pattern: 'vendor/**/*.js', included: false, watched: false},
{pattern: 'mock/**/*.json', included: false, watched: false},
{pattern: 'scripts/**/*.js', included: false},
{pattern: 'tests/**/*.js', included: false}
]
...
dist/specRunner.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Spec Runner</title>
</head>
<body>
<h1>Thank you for reading this far</h1>
<h2>Karma 404s with each of these</h2>
<script src="jQuery/jquery-1.7.min.js"></script>
<script src="vendor/jQuery/jquery-1.7.min.js"></script>
<script src="dist/vendor/jQuery/jquery-1.7.min.js"></script>
...etc...
<script src="scripts/app.js"></script>
<script src="scripts/x.module.js"></script>
<script src="scripts/y.module.js"></script>
<script src="scripts/z.module.js"></script>
...etc...
</body>
</html>
Karma 配置中的 files
选项执行多个作业。它的工作之一是告诉 Karma 要创建什么 script
元素。然而,它的另一项工作是告诉 Karma 服务什么脚本。您不能只是手动将 script
元素放入您的 HTML 中并称之为完成。您需要配置 Karma 以便提供文件,因为如果它们未在此处列出,Karma 将不会提供它们。
您可以在配置中使用这样的模式来告诉 Karma 提供文件但不将它们 (included: false
) 作为 script
元素包含在页面上:
files: [
{ pattern: "vendor/**/*.js", included: false },
{ pattern: "scripts/**/*.js", included: false },
// ...
]
还指出所有内容都将在浏览器端的 /base
下提供。因此文件 scripts/app.js
将作为 /base/scripts/app.js
使用,后一个路径是您在 script
中或任何时候引用该文件时必须使用的路径。
如果您对 Karma 看到的内容及其服务方式感到困惑,您可以在浏览器中进入调试模式并检查变量 __karma__.files
。它是 Karma 能够提供的文件名映射:键是文件名,每个键的值是文件内容的校验和。