如何生成打字稿输出到正确的目的地?

时间:2017-03-27 22:30:37

标签: javascript typescript gruntjs jasmine

我正在使用Typescript重新实现现有功能,我想使用Jasmine进行测试。我开始使用Jasmine和Javascript规范,但这感觉不对。现在我尝试使用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/中的规范文件找不到/lib/js/spec/src中的库。

的推荐解决方案是什么?
  • 设置目录
  • 用于编译的参数

2 个答案:

答案 0 :(得分:2)

  

这里推荐的解决方案是什么

就个人而言,我喜欢单一的tsconfig.json用于IDE集成。 src内的所有内容(包括测试)outDirlib。最后只需.npmignore lib/tests

更多

此处涵盖srclib的组织:https://basarat.gitbooks.io/typescript/content/docs/quick/nodejs.html

答案 1 :(得分:1)

@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"
  ...
}

Gruntfile.js必须更改为:

jasmine: {
        exec: 'jasmine.cmd JASMINE_CONFIG_PATH=jasmine.json'
    }

之后,所有文件都照常编译,转到正确的位置,从app文件到其他文件的引用和spec文件到app文件的引用都是稳定的。