Skip to content

项目结构化

项目规范检查

shell
pnpm install simple-git-hooks lint-staged -D
json
{
    "scripts": {
        "prepare": "npx simple-git-hooks" // simple-git-hooks 初始化才行保证 hook 正常执行
    },
    "devDependencies": {
        "lint-staged": "^15.5.0", // 只针对 git commit 区的文件进行操作
        "simple-git-hooks": "^2.13.0" // git hooks
    },
    "lint-staged": {
        "package.json": ["prettier --write"],
        "*.(md|html)": ["prettier --write"]
    },
    "simple-git-hooks": {
        "pre-commit": "npx lint-staged",
        "pre-push": "pnpm turbo run lint --filter=!@muliice/eslint-config"
    }
}

package.json experts 位置自定义

text
your-package/
├── src/
│   ├── xxx/
│   │   ├── index.ts
│   ├── yyy/
│   │   ├── index.ts
├── hooks/
│   ├── hook1/
│   │   ├── index.ts
│   ├── hook2/
│   │   ├── index.ts
├── package.json
├── tsconfig.json
  • 省略 src

import module from 'your-package/someModule'

import useHook from 'your-package/useSomeHook'

json
{
    "name": "your-package",
    "exports": {
        // @your-package/src/some_module/index.ts => @your-package/some_module
        "./*": "./src/*/index.ts",
        // hooks 保持不变
        "./hooks/*": "./hooks/*/index.ts"
    },
    "typesVersions": {
        "*": {
            "*": ["src/*/index.ts"],
            "hooks/*": ["hooks/*/index.ts"]
        }
    }
}
  • 省略 src、hooks

如果要导入 src 下非 index.ts 文件,需要带上 src 目录,即完整路径

import module from 'your-package/someModule'

import config from 'your-package/src/someModule/config'

import useHook from 'your-package/hooks/useSomeHook'

json
{
    "name": "your-package",
    "exports": {
        "./*": "./src/*/index.ts",
        "./src/*": "./src/*",
        "./hooks/*": "./hooks/*/index.ts"
    },
    "typesVersions": {
        "*": {
            "*": ["src/*/index.ts"],
            "src/*": ["src/*"],
            "hooks/*": ["hooks/*/index.ts"]
        }
    }
}