Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/8.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_Typescript_Gruntjs_Jasmine - Fatal编程技术网

Javascript 如何将Typescript输出到正确的目标?

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

我正在用Typescript重新实现现有的功能,我想用Jasmine进行测试。我已经开始在Javascript规范中使用Jasmine,但这感觉不对。现在我尝试使用Typescript规范(感觉不错),但我无法找到在正确位置生成javascript文件的正确配置

我正在使用:

  • 咕噜声
  • 茉莉花
  • 打字稿
结构如下:

/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
建议)。