mille classifies each import as “Internal” or “External” per language.
The [resolve.*] sections configure this resolution logic.
[resolve.typescript]
| Key | Description |
|---|
tsconfig | Path to tsconfig.json. mille reads compilerOptions.paths and resolves aliases as internal imports. |
tsconfig = "./tsconfig.json"
Import classification:
| Import | Classification |
|---|
import X from "./module" | Internal |
import X from "../module" | Internal |
import X from "@/module" (tsconfig path alias) | Internal |
import X from "react" | External |
import fs from "node:fs" | External |
[resolve.go]
| Key | Description |
|---|
module_name | Go module name (matches go.mod). Auto-generated by mille init. |
module_name = "github.com/myorg/my-go-app"
[resolve.python]
| Key | Description |
|---|
src_root | Root directory of the Python source tree (relative to mille.toml) |
package_names | Your package names — imports starting with these are classified as internal |
package_names = ["domain", "usecase", "infrastructure"]
Import classification:
| Import | Classification |
|---|
from .sibling import X (relative) | Internal |
import domain.entity (matches package_names) | Internal |
import os, import sqlalchemy | External |
[resolve.java]
Used for both Java and Kotlin projects.
| Key | Description |
|---|
module_name | Base package of your project (e.g. com.example.myapp). Auto-generated by mille init. |
pom_xml | Path to pom.xml. Uses groupId.artifactId as module_name when not set. |
build_gradle | Path to build.gradle. Uses group + rootProject.name when module_name is not set. |
module_name = "com.example.myapp"
Import classification:
| Import | Classification |
|---|
import com.example.myapp.domain.User | Internal |
import static com.example.myapp.util.Helper.method | Internal |
import java.util.List, import org.springframework.* | External |