Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/385.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/40.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在编译单元测试期间更改Typescript导入目录_Javascript_Node.js_Typescript_Gulp_Es6 Modules - Fatal编程技术网

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”