【问题标题】:Specify systemJS configuration file for Node tsc compiler为 Node tsc 编译器指定 systemJS 配置文件
【发布时间】:2016-09-02 14:14:36
【问题描述】:

现在,Node tsc 编译器查看 tsconfig.jsonfile,它看起来像这样:

{
  "compilerOptions": {
    "target": "es5",
    "module": "system",
    "moduleResolution": "node",
    "sourceMap": true,
    "emitDecoratorMetadata": true,
    "experimentalDecorators": true,
    "removeComments": false,
    "noImplicitAny": true,
    "suppressImplicitAnyIndexErrors": true
  }
}

使用"module": "system" 行,您可以指定它使用 SystemJS 来管理模块。是否可以配置 SystemJS 将使用哪个配置文件?我希望能够指定自定义定义的模块,这样 Typescript 就不会抱怨它们,而不必为每个模块创建一个单独的 .d.ts 文件。它现在似乎没有查看 systemjs.config.jssystem-config.js

【问题讨论】:

  • 不,那是不可能的,typescript 没有考虑不同模块系统的工作方式,只考虑它们的模块结构。但即使你可以,那也不会以你想要的方式帮助你。知道需要哪个外部模块不同于知道在哪里可以找到它们对应的.d.ts 文件。但是使用typingstypescript 2 @types 有什么问题?听起来正是您想要的。
  • 问题是,当我们部署到生产环境时,我希望有几个缩小的模块,按其代码的一般用途分组,例如一个用于实用程序的模块(这是一个 Angular 2 项目)。我希望开发人员能够在本地更改他们的一个项目中的代码并自动获取更改,但是当我们进入 prod 时,我希望我们的环境只从模块中导入所有内容。但我不想为我们正在创建的每个组件定义一个打字稿定义。
  • 我可能误解了您要执行的操作。您的问题在于您自己的模块,这些模块被分成不同的文件,因此您将它们尽可能多地导入,然后在生产中将它们收集在一起,以便您需要以不同的方式导入它们?
  • 是的,没错。

标签: typescript systemjs tsc


【解决方案1】:

我在 tsconfig.json 文件中使用 SystemJS 配置的 cmets 仍然相关,因为没有选项可以这样做。

但是,既然我了解了您想要什么,那么只要您以正确的方式构建代码,就可以只使用打字稿。
让我们假设以下模块:

  • 模块A
    • SubModuleOne
    • 子模块二

在 dev 中,您想从 ./ModuleA/SubModuleOne 导入,但在 prod 中,它应该来自 ./ModuleA,因为您将所有内部模块编译到一个同名文件中。

那么总是从./ModuleA 导入怎么样?
根据How TypeScript resolves modules

类似 import { b } from "./moduleB" 的导入语句 /root/src/moduleA.ts 将导致尝试以下操作 定位“./moduleB”的位置:

  1. /root/src/moduleB.ts
  2. /root/src/moduleB.tsx
  3. /root/src/moduleB.d.ts
  4. /root/src/moduleB/package.json(如果它指定了“typings”属性)
  5. /root/src/moduleB/index.ts
  6. /root/src/moduleB/index.tsx
  7. /root/src/moduleB/index.d.ts

因此,如果您有 ./ModuleA/index.d.ts(或 .ts,那么您可以包含所有内部模块,然后仅从 ./ModuleA 导入将在开发和生产中都有效。
这有点像带有__init__.py的python模块@

希望这对你有用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-12-29
    • 2019-01-07
    • 1970-01-01
    • 2022-11-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-31
    相关资源
    最近更新 更多