打字稿:从不同于node_modules的位置解析包

时间:2017-09-19 16:07:45

标签: typescript

我正在学习打字稿,我很乐意开始尝试创建包。

这是我目前的文件夹结构:

myProject/
├── node_modules/
├── src/
│   ├── app
│       ├── index.ts
│   ├── packages
│       ├── database
│           ├── index.ts
├── package.json
├── tsconfig.json

正如您所看到的,我的src文件夹分为app,其中包含我的应用程序实现,以及package文件夹,应该更加“抽象”,以便最终有一天成为一个包裹。

我想要的是访问我的包模块,在我的app文件夹中写下以下内容:

import Database from 'packages/database';

而不是

import Database from '../packages/database/index';

我将paths配置环绕到tsconfig.json文件中,但我无法让它工作:

{
  "compilerOptions": {

    ...

    "baseUrl": ".",
    "paths": {
      "packages": ["src/packages"]
    }
  }
}

我还希望继续访问node_modules文件夹...

我怎么能实现这一目标?

感谢您的回复

1 个答案:

答案 0 :(得分:1)

我认为最适合您的解决方案是将您的工作分成几个包:

例如,您将拥有一个包数据库包,它将使您的所有数据库相关工作。

为此,您需要稍微修改一下结构:

myProject/
├── node_modules/
├── src/
│   ├── app
│       ├── index.ts
│   ├── packages
│       ├── database
│           ├── SomeClass.ts
│           ├── index.ts
├── package.json
├── tsconfig.json

然后在database/index.ts文件中进行所有导出:

import SomeClass from './SomeClass'
import SomeOtherClass from './SomeOtherClass'

export {SomeClass, SomeOtherClass}

您可以从您的app文件夹中输入:

import {SomeClass} from 'package-database';

当然,您还需要修改tsconfig.json,您已接近它了:

{
    "compilerOptions": {

    ...

    "baseUrl": ".",
    "paths": {
        "package-database": ["src/packages/database"]
        }
    } 
}