Javascript 在编译单元测试期间更改Typescript导入目录
假设我有一个名为Javascript 在编译单元测试期间更改Typescript导入目录,javascript,node.js,typescript,gulp,es6-modules,Javascript,Node.js,Typescript,Gulp,Es6 Modules,假设我有一个名为src的目录,其中包含一个名为app.ts export default function app(){ return "Hello World"; } import "mocha"; import { assert } from "chai"; import app from "../src/app" describe("Some test", () => { it("says Hello World", function(){ ass
src
的目录,其中包含一个名为app.ts
export default function app(){
return "Hello World";
}
import "mocha";
import { assert } from "chai";
import app from "../src/app"
describe("Some test", () => {
it("says Hello World", function(){
assert.equal(app(),"Hello World");
});
})
我有另一个名为test
的目录,其中包含一个名为some.test.ts
export default function app(){
return "Hello World";
}
import "mocha";
import { assert } from "chai";
import app from "../src/app"
describe("Some test", () => {
it("says Hello World", function(){
assert.equal(app(),"Hello World");
});
})
以及用于构建生产代码和测试代码的gulpfile.js
:
gulp.task("build", function () {
var tsproject = ts.createProject("tsconfig.json");
var tsresult = gulp.src("./src/**/*.ts")
.pipe(tsproject());
tsresult.js
.pipe(gulpBabel({ presets: ['es2015'] }))
.pipe(gulp.dest("./dist"))
tsresult.dts.pipe(gulp.dest("./dist"));
});
gulp.task("build-test", ["build"], function () {
var tsproject = ts.createProject("tsconfig.json");
var tsresult = gulp.src("./test/**/*.test.ts")
.pipe(sourcemaps.init())
.pipe(tsproject());
tsresult.js
.pipe(gulpBabel({ presets: ['es2015'] }))
.pipe(sourcemaps.write())
.pipe(gulp.dest("./dist/test"))
tsresult.dts.pipe(gulp.dest("./dist/test"));
});
我的tsconfig.json
如下:
{
"compilerOptions": {
"target": "es6",
"forceConsistentCasingInFileNames": true,
"declaration": true,
"sourceMap": true,
"experimentalDecorators": true,
"moduleResolution": "node",
"module": "es2015"
"rootDir": "src"
}
}
这将很好地编译,但是当我尝试运行测试时,它不会工作,因为它正在查找。/dist/src/app.js
我希望将源代码保存在src
文件夹中,但我希望将其编译到dist
文件夹的根目录中。同时,我希望保留我的导入,以便我的IDE可以在开发期间找到它们,而编译的代码可以在运行时找到它们。我假设这将涉及编译期间导入语句的某种转换
使用(最好)Gulp是否可以实现这一点?添加您的tsconfig.json。您可能只需要指定
--rootDir src
。谢谢,我用tsconfig.json
编辑了这个问题,我添加了“rootDir”:“src”
,但它仍然不起作用。您为什么不在tsconfig
中指定“outDir”:“dist”
?“outDir”
比通过gulp指定更好。无论如何,您几乎肯定需要的是一个tsconfig.test.json
(或您称之为的任何名称),它“扩展”
tsconfig.json,但覆盖“rootDir”
和“outDir”