# tango.config.json | 使用 Tango 构建你的低代码生产力工具
tango.config.json 是 Tango 项目的核心配置文件，当您的项目使用 Tango 设计器在线开发时会读取该文件进行线上开发环境的初始化。

跳到主要内容
🏗 当前版本为 alpha 版本，相关文档正在编写之中，敬请期待！

# tango.config.json

`tango.config.json` 是 Tango 项目的核心配置文件，当您的项目使用 Tango 设计器在线开发时会读取该文件进行线上开发环境的初始化。

## entry​

非必填。`entry` 是项目的入口文件，用于在线设计器的初始化，默认取值为 `/src/index.js`。

## packages​

项目使用的 npm 包依赖信息，用于定义依赖的类型以及外置依赖资源。该配置项为一个 map，key 为对应的 npm 包名，value 为该依赖的配置信息。

- version 包的版本号，必选
- library UMD 包中的全局变量名，必选
- type 依赖的类型
  - baseDependency 基础依赖包
  - bizDependency 业务组件依赖包
  - dependency 其他依赖包
- resources 外置依赖资源列表
- designerResources 在设计器视图载入的外置资源列表，用来需要区别加载时使用
- description 描述信息

依赖的类型 `type` 可以是 `baseDependency` 即项目的基础依赖，用于获取项目基础物料列表的信息；也可以是 `bizDependency` 即业务组件依赖，用于获取合并到物料面板业务组件菜单中的业务组件列表；也可以是 `depenency` 即项目的其他依赖，只用于提供 external 信息与版本信息等，不会和物料面板产生关系。

当配置了外置依赖资源 `resources` 与其对应的全局变量 `library` 时，当这些依赖被 import 时，相关资源不会被打包到 bundle 中，而是在运行时再去外部获取这些扩展依赖，其等效于之前的 `sandbox.externalResources` 与 `sandbox.externals` 配置项。此外，可以将 `resource` 中的版本号替换为 `{{version}}`，其会在平台上构建时替换为版本号。特殊的，可以定义 `designerResources` 用于适配平台的设计器视图。

    {
      "react": {
        "version": "17.0.2",
        "library": "React",
        "type": "dependency",
        "resources": ["https://unpkg.com/react@{{version}}/umd/react.development.js"]
      },
      "react-dom": {
        "version": "17.0.2",
        "library": "ReactDOM",
        "type": "dependency",
        "resources": ["https://unpkg.com/react-dom@{{version}}/umd/react-dom.development.js"]
      },
      "@music163/tango-boot": {
        "version": "0.1.3",
        "library": "TangoBoot",
        "type": "baseDependency",
        "resources": ["https://unpkg.com/@music163/tango-boot@{{version}}/dist/boot.js"],
        "description": "云音乐低代码运行时框架"
      },
      "@music163/antd": {
        "version": "0.1.2",
        "library": "TangoAntd",
        "type": "baseDependency",
        "resources": [
          "https://unpkg.com/@music163/antd/{{version}}/dist/index.js",
          "https://unpkg.com/@music163/antd/{{version}}/dist/index.css"
        ],
        "description": "云音乐低代码中后台应用基础物料",
        "designerResources": [
          "https://unpkg.com/@music163/antd/{{version}}/dist/designer.js",
          "https://unpkg.com/@music163/antd/{{version}}/dist/index.css"
        ]
      },
      "@music163/biz-comp": {
        "type": "bizDependency",
        "version": "0.0.2"
      }
    }

注意依赖的先后顺序

由于依赖是按照定义的先后顺序注入至沙箱内，因此需要确保 `packages` 内依赖的先后顺序，否则可能会导致应用加载依赖失败（例如将 `react` 放置在组件包之后，会导致组件包无法正常加载）。

## externalResources​

除了上述 `packages` 定义的外置依赖资源外，在这里可以定义沙箱启动时引入的非 npm 包的外置依赖资源列表，可以是 `js` 或 `css` 等静态文件。例如：

    {
      "externalResources": ["https://tango.netease.io/script.js"]
    }

## proxy​

非必填。项目的代理规则。

    {
      "proxy": {
        "/api/pms": {
          "target": "http://cms.qa.igame.163.com",
          "changeOrigin": true
        }
      }
    }