为什么我需要为业力配置指定所有文件,即使它们是用 requirejs 加载的
why do I need to specify all files for karma config even if they are loaded with requirejs
我的目录结构如下:
--app
|---dots
| |---some.js
|
|---entry.js
|---bootstrap.js
|---karma.conf.js
|---test-main.js
|---test
|---sampleSpec.js
这是我的 sampleSpec
依赖项:
define(["app/bootstrap", "app/dots/some"], function () {}]
据我所知,我使用 requirejs 将 bootstrap
和 some
文件加载到浏览器中。但是,根据我是否在我的 karma.conf.js
文件中指定 dots/*
文件夹,业力服务器成功或未能解析 dots/some.js
文件。我的意思是如果我在 karma.conf.js
中指定以下 pattern: 'app/**/*.js'
:
files: [
'test-main.js',
{pattern: 'app/**/*.js', included: false},
{pattern: 'test/*Spec.js', included: false}
],
dots/some.js
文件被加载到浏览器中,如果我这样指定 pattern: 'app/*.js'
业力服务器 returns 404
- 找不到文件。为什么会这样?如果我使用 requirejs
加载它,为什么 karma
应该关心路径?
当你点燃业力时,业力所做的是:
- 它做一些预处理工作
- 它会创建一个加载您的网络资产(css、js 等...)的网页
- 它创建一个网络服务器来为您的资产提供服务
网络服务器需要知道您在哪里拥有自己的资产,以及您是想直接从页面提供它们还是稍后加载它们。
在您的 karma 配置文件中,您有几个选项来配置您希望如何加载它们:
...
files: [
'test-main.js',
{pattern: 'app/**/*.js', included: true, watched: false, served: true},
...
],
proxies: {
'/img/': 'http://localhost:8080/base/test/images/'
}
在 files
数组中,您可以放置所有您想要包含、观看和提供的资源。
如果您想改用自定义 URL(假设您的应用中有特定路线),您可以告诉 karma 如何将该自定义 URL 反映到静态 URL 或简单地对其进行映射(假设您正在使用第三方服务)。
如果一个文件没有被映射,那么 karma 将不会提供它,所以当你需要它时,你的请求将有一个 HTTP 404
响应。
Karma 还接受正则表达式模式(最小匹配字符串)作为路由 - 如文档中指定 - 因此您的 app/**/*.js
将在任何级别匹配 app
内的任何 js 文件,而 app/*.js
将仅匹配 JS文件严格位于 app
文件夹内。
如果是代理,假设您有兴趣提供图像,karma 会设置一个静态服务器,其中 http://localhost:8080/base
映射您的项目根目录。
如需完整说明,请查看 karma documentation。
我的目录结构如下:
--app
|---dots
| |---some.js
|
|---entry.js
|---bootstrap.js
|---karma.conf.js
|---test-main.js
|---test
|---sampleSpec.js
这是我的 sampleSpec
依赖项:
define(["app/bootstrap", "app/dots/some"], function () {}]
据我所知,我使用 requirejs 将 bootstrap
和 some
文件加载到浏览器中。但是,根据我是否在我的 karma.conf.js
文件中指定 dots/*
文件夹,业力服务器成功或未能解析 dots/some.js
文件。我的意思是如果我在 karma.conf.js
中指定以下 pattern: 'app/**/*.js'
:
files: [
'test-main.js',
{pattern: 'app/**/*.js', included: false},
{pattern: 'test/*Spec.js', included: false}
],
dots/some.js
文件被加载到浏览器中,如果我这样指定 pattern: 'app/*.js'
业力服务器 returns 404
- 找不到文件。为什么会这样?如果我使用 requirejs
加载它,为什么 karma
应该关心路径?
当你点燃业力时,业力所做的是:
- 它做一些预处理工作
- 它会创建一个加载您的网络资产(css、js 等...)的网页
- 它创建一个网络服务器来为您的资产提供服务
网络服务器需要知道您在哪里拥有自己的资产,以及您是想直接从页面提供它们还是稍后加载它们。
在您的 karma 配置文件中,您有几个选项来配置您希望如何加载它们:
...
files: [
'test-main.js',
{pattern: 'app/**/*.js', included: true, watched: false, served: true},
...
],
proxies: {
'/img/': 'http://localhost:8080/base/test/images/'
}
在 files
数组中,您可以放置所有您想要包含、观看和提供的资源。
如果您想改用自定义 URL(假设您的应用中有特定路线),您可以告诉 karma 如何将该自定义 URL 反映到静态 URL 或简单地对其进行映射(假设您正在使用第三方服务)。
如果一个文件没有被映射,那么 karma 将不会提供它,所以当你需要它时,你的请求将有一个 HTTP 404
响应。
Karma 还接受正则表达式模式(最小匹配字符串)作为路由 - 如文档中指定 - 因此您的 app/**/*.js
将在任何级别匹配 app
内的任何 js 文件,而 app/*.js
将仅匹配 JS文件严格位于 app
文件夹内。
如果是代理,假设您有兴趣提供图像,karma 会设置一个静态服务器,其中 http://localhost:8080/base
映射您的项目根目录。
如需完整说明,请查看 karma documentation。