我正在将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
您能帮我吗?
答案 0 :(得分:1)
为了编译这些文件,您可以使用
"include": ["tests"]
在您的tsconfig中
话虽这么说,我认为将项目转换为使用ng cli会容易得多:) 祝你好运