我正在尝试package.json在我的 TypeScript 应用程序中导入:
import packageJson from '../package.json';
Run Code Online (Sandbox Code Playgroud)
我的tsconfig.json包含以下内容:
{
"compilerOptions": {
"rootDir": "./src/"
"outDir": "./dist/",
"baseUrl": ".",
"resolveJsonModule": true
}
}
Run Code Online (Sandbox Code Playgroud)
问题是当我编译这个时,我得到
error TS6059: File '/path/to/package.json' is not under 'rootDir' '/path/to/app/src/'. 'rootDir' is expected to contain all source files.
我不知道我理解这个问题,因为这两个./src/与/.dist具有相同的父..,所以打字稿可能只是独自离开import '../package.json'和它的工作无论从rootDir或outDir。
无论如何,我尝试了以下方法,但结果并不令人满意:
rootDir- 编译有效,但dist将包含dist/src我不想要的outDir- 然后src被.js文件污染(.js.map如果sourceMap是真的) …我有一个src包含源代码和单元测试的目录,以及一个test包含单独速度测试的目录。
当我使用 构建项目时tsc,我得到如下目录结构:
dist/
src/
index.js
...
test/
speed-test.js
Run Code Online (Sandbox Code Playgroud)
然而,我更喜欢将“平面”输出发送到我的dist目录,如下所示:
dist/
index.js
...
speed-test.js
...
Run Code Online (Sandbox Code Playgroud)
如果我speed-test.ts从test目录中删除,tsc则不会将src目录添加到dist. 仅当需要(或者至少当tsc决定需要时)来区分编译代码的源时,才会添加额外的目录结构。
我确信这有时对于避免文件名冲突非常有用,但在这种情况下这对我来说并不重要,而且我不想得到这个额外的“帮助”。
这是我的tsconfig.json:
{
"compilerOptions": {
"target": "ES6",
"module": "commonjs",
"outDir": "./dist",
"noImplicitAny": true,
"noImplicitThis": true,
"alwaysStrict": true,
"noImplicitReturns": true,
"moduleResolution": "node",
"esModuleInterop": true,
"declaration": true,
"declarationMap": true,
"sourceMap": true,
"resolveJsonModule": true,
"allowSyntheticDefaultImports": true
}
}
Run Code Online (Sandbox Code Playgroud)
我尝试添加"rootDirs"的选项["src", "test"],但这没有帮助。 …
我目前正在尝试将我的ts文件构建为单个ts文件.我得到的问题是我的代码不符合我的想法.我使用sourceRoot尝试设置唯一可以获取源的地方但是没有用.我也尝试过放一个.面前的目录,但它仍然从各处拉出来:(
{
"compilerOptions": {
"target": "ES5",
"noImplicitAny": true,
"removeComments": true,
"preserveConstEnums": true,
"out": "www/js/app.js",
"sourceMap": true,
"sourceRoot": "www/app"
}
}
Run Code Online (Sandbox Code Playgroud)
所有文件,包括那些不在www/app build内的文件:(
现在我已经回到手动指定文件:
{
"compilerOptions": {
"target": "ES5",
"noImplicitAny": true,
"removeComments": true,
"preserveConstEnums": true,
"out": "www/js/app.js",
"sourceMap": true
},
"files": [
"./www/app/app.ts",
"./www/app/menu/menuController.ts",
"./www/app/playlists/playlistsController.ts"
]
}
Run Code Online (Sandbox Code Playgroud)
是否可以将源目录限制为仅限www/app?
谢谢
我有一个Angular CLI工作区,包含两个库项目,foo和bar.当我构建两个库中的第二个时foo,构建失败并出现以下错误:
错误TS6059:文件'/code/projects/bar/src/lib/types.ts'不在'rootDir''/ code/projects/foo/src'下.'rootDir'预计会包含所有源文件.
Run Code Online (Sandbox Code Playgroud)Error: error TS6059: File '/code/projects/bar/src/lib/types.ts' is not under 'rootDir' '/code/projects/foo/src'. 'rootDir' is expected to contain all source files. at Object.<anonymous> (/code/node_modules/ng-packagr/lib/ngc/compile-source-files.js:53:68) at Generator.next (<anonymous>) at /code/node_modules/ng-packagr/lib/ngc/compile-source-files.js:7:71 at new Promise (<anonymous>) at __awaiter (/code/node_modules/ng-packagr/lib/ngc/compile-source-files.js:3:12) at Object.compileSourceFiles (/code/node_modules/ng-packagr/lib/ngc/compile-source-files.js:19:12) at Object.<anonymous> (/code/node_modules/ng-packagr/lib/ng-v5/entry-point/ts/compile-ngc.transform.js:26:32) at Generator.next (<anonymous>) at /code/node_modules/ng-packagr/lib/ng-v5/entry-point/ts/compile-ngc.transform.js:7:71 at new Promise (<anonymous>)
我已复制了错误的沙箱回购GitHub上这里.我仍然遇到错误,尽可能地简化了代码.您可以通过npm run build在rootDir-expect-all-source-files-error分支上执行来重现错误.错误的原因是什么?可能这是一个或与ng-packagr或的错误?或者只是一个配置问题?ngctsc
下面是我可以进行构建传递的代码更改,但我想知道导致错误的原因是什么.
export class BarComponent …Run Code Online (Sandbox Code Playgroud)