相关疑难解决方法(0)

“package.json”不在“rootDir”下

我正在尝试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'它的工作无论从rootDiroutDir

无论如何,我尝试了以下方法,但结果并不令人满意:

  • 删除rootDir- 编译有效,但dist将包含dist/src我不想要的
  • 删除outDir- 然后src.js文件污染(.js.map如果sourceMap是真的) …

javascript typescript

41
推荐指数
4
解决办法
2万
查看次数

Typescript 编译器选项 - 尝试将“平面”输出输出到 outDir

我有一个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.tstest目录中删除,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"],但这没有帮助。 …

typescript tsconfig

15
推荐指数
1
解决办法
7779
查看次数

tsconfig.json - 仅从文件夹构建ts文件

我目前正在尝试将我的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?

谢谢

typescript

12
推荐指数
4
解决办法
3万
查看次数

'rootDir'应包含所有源文件

我有一个Angular CLI工作区,包含两个库项目,foobar.当我构建两个库中的第二个时foo,构建失败并出现以下错误:

错误TS6059:文件'/code/projects/bar/src/lib/types.ts'不在'rootDir''/ code/projects/foo/src'下.'rootDir'预计会包含所有源文件.

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>)
Run Code Online (Sandbox Code Playgroud)

我已复制了错误的沙箱回购GitHub上这里.我仍然遇到错误,尽可能地简化了代码.您可以通过npm run buildrootDir-expect-all-source-files-error分支上执行来重现错误.错误的原因是什么?可能这是一个或与ng-packagr或的错误?或者只是一个配置问题?ngctsc

意见

下面是我可以进行构建传递的代码更改,但我想知道导致错误的原因是什么.

bar.component.ts

构建失败

export class BarComponent …
Run Code Online (Sandbox Code Playgroud)

typescript angular-cli angular angular-library ng-packagr

12
推荐指数
5
解决办法
1万
查看次数