如何配置tsc从特定文件夹编译测试规范?

时间:2019-04-18 14:30:31

标签: json angular typescript

我正在将e2e测试实施到Angular项目中。它不是以@angular-cli开头的,所以我要手动配置大多数。

我现在要做的是在package.json中定义一个脚本,以仅将tests/文件夹中的规范转换为tests/compiled

我尝试遵循以下问题:tsconfig.json - Only build ts files from folder。建议使用--rootDir定义文件夹。

但是,如果我使用以下命令:tsc --rootDir tests --outDir ./tests/compiled,它仍然会编译其他文件夹中的文件(例如./src)。另外,它返回很多TS6059错误,抱怨rootDir应该包含所有源文件。

一个例子: error TS6059: File 'C:/Users/Betalabs/Documents/Projetos/Engine-Frontend/src/vendor.browser.ts' is not under 'rootDir' 'tests'. 'rootDir' is expected to contain all source files.

文件层次结构是这个。请注意,我要转换的测试规格(*.spec.ts位于tests/文件夹中。

(root)
-- src/
-- tests/
    -- compiled/
        -- (transpiled test files, ".js")
    -- helpers/
        -- (helper modules, ".ts")
    -- page-objects/
        -- (page objects, ".ts")
    -- forms.spec.ts
    -- filters.spec.ts
-- .gitignore
-- .tern-project
-- buildspec.yml
-- conf.js
-- package-lock.json
-- package.json
-- README.md
-- tsconfig.json
-- tsconfig.webpack.json
-- tslint.json
-- typedoc.json
-- webpack.config.js

这是我的tsconfig.json:

{
  "compilerOptions": {
    "target": "es5",
    "module": "commonjs",
    "moduleResolution": "node",
    "emitDecoratorMetadata": true,
    "experimentalDecorators": true,
    "allowSyntheticDefaultImports": true,
    "sourceMap": true,
    "noEmitHelpers": true,
    "importHelpers": true,
    "strictNullChecks": false,
    "baseUrl": "./src",
    "paths": {
      "@angular/*": ["node_modules/@angular/*"]
    },
    "lib": [
      "dom",
      "es6",
      "es2017.object"
    ],
    "typeRoots": [
      "node_modules/@types"
    ],
    "types": [
      "jasmine",
      "hammerjs",
      "node",
      "source-map",
      "uglify-js",
      "webpack"
    ]
  },
  "exclude": [
    "node_modules",
    "dist"
  ],
  "awesomeTypescriptLoaderOptions": {
    "forkChecker": true,
    "useWebpackText": true
  },
  "compileOnSave": false,
  "buildOnSave": false,
  "atom": { "rewriteTsconfig": false }
}

我正在通过解决所有文件并手动删除不需要的文件来“解决”该问题。换句话说:一团糟:P

您能帮我吗?

1 个答案:

答案 0 :(得分:1)

为了编译这些文件,您可以使用

"include": ["tests"]

在您的tsconfig中


话虽这么说,我认为将项目转换为使用ng cli会容易得多:) 祝你好运