Javascript 如何将Typescript输出到正确的目标?
我正在用Typescript重新实现现有的功能,我想用Jasmine进行测试。我已经开始在Javascript规范中使用Jasmine,但这感觉不对。现在我尝试使用Typescript规范(感觉不错),但我无法找到在正确位置生成javascript文件的正确配置 我正在使用:Javascript 如何将Typescript输出到正确的目标?,javascript,typescript,gruntjs,jasmine,Javascript,Typescript,Gruntjs,Jasmine,我正在用Typescript重新实现现有的功能,我想用Jasmine进行测试。我已经开始在Javascript规范中使用Jasmine,但这感觉不对。现在我尝试使用Typescript规范(感觉不错),但我无法找到在正确位置生成javascript文件的正确配置 我正在使用: 咕噜声 茉莉花 打字稿 结构如下: /base_dir /src *.ts files /src-spec *.ts files (only specs) /spec *.js fi
- 咕噜声
- 茉莉花
- 打字稿
/base_dir
/src
*.ts files
/src-spec
*.ts files (only specs)
/spec
*.js files (generated by typescript compiler I hope)
/lib/js
*.js files (generated by typescript compiler as well)
我目前已为Grunt定义了以下配置:
ts: {
libs : {
src: ["src/*.ts", "!node_modules/**"],
outDir: 'lib/js',
options: {
keepDirectoryHierarchy: false,
rootDir: "lib/js"
}
},
specs : {
src: ["src-spec/*.ts"],
outDir: ['spec'],
options: {
rootDir: "spec",
keepDirectoryHierarchy: false
}
}
但由此产生的目录结构如下所示:
/lib/js/*.js files // produced correctly
/spec/src/*.js // same content as /lib/js
/spec/src-spec/*.js // the corresponding spec file
当我运行Jasmine时,/spec/src spec/
中的spec文件找不到位于/lib/js
和/spec/src
中的库
这里推荐的解决方案是什么
- 目录设置
- 用于编译的参数
tsconfig.json
进行IDE集成。带有outDir
到lib
的src
内部的所有内容(包括测试)。最后简单地.npmignore
lib/tests
更多
这里介绍了
src
和lib
的组织:关于@basarat的回答给了我正确的方向,下面是适合我上述问题的解决方案:
将结构更改为:
/src
*.ts (app files)
tests/*.ts (test files)
/lib/js
*.js (generated app files)
tests/*.js (generated test files)
jasmine.json (configuration for the changed paths)
jasmine.json
必须更改为:
{
"spec_dir": "lib/js/tests"
...
}
jasmine: {
exec: 'jasmine.cmd JASMINE_CONFIG_PATH=jasmine.json'
}
grunfile.js
必须更改为:
{
"spec_dir": "lib/js/tests"
...
}
jasmine: {
exec: 'jasmine.cmd JASMINE_CONFIG_PATH=jasmine.json'
}
在那之后,所有的文件都像往常一样被编译,转到正确的位置,从应用程序文件到其他文件的引用以及从规范文件到应用程序文件的引用都是稳定的。答案给了我正确的起点,我添加了另一个答案只是为了说明我的解决方案(不遵循
tsconfig.json
建议)。