使用 JavaScript 腳本或是 tree 自動產出目錄結構吧!
| 2 min read
如果專案越來越龐大,是不是很難了解整個專案結構呢?
如果有可以自動產出結構的東西,就不用自己一層一層慢慢找了,真的非常方便,減少了手動寫文件出錯的機率,就跟 Swagger 一樣是懶人的福音^^
接下來簡單介紹兩種方法~
自己寫 JavaScript 腳本產出
使用 node 18 版本
// generateReadme.js
import fs from 'fs'
import path from 'path'
function generateFolderStructure(dir, depth = 0) {
const items = fs.readdirSync(dir)
let content = ''
for (const item of items) {
const itemPath = path.join(dir, item)
const isDirectory = fs.statSync(itemPath).isDirectory()
const indent = ' '.repeat(depth)
if (isDirectory) {
content += `${indent}- ${item}\n`
content += generateFolderStructure(itemPath, depth + 1)
} else {
content += `${indent}- ${item}\n`
}
}
return content
}
const projectRoot = '/path/to/your/project' // 這裡替換成自己電腦專案的絕對路徑
const folderStructure = generateFolderStructure(projectRoot)
const readmeContent = `# Project Folder Structure\n\n${folderStructure}`
fs.writeFileSync('README.md', readmeContent)
console.log('README.md generated successfully.')
確認電腦有安裝 node,然後執行
node generateReadme.js
產出來的 README.md 結構會像下面這樣
- apis
- commonAPI.ts
- components
- .DS_Store // 會不小心混入記得刪除唷
- button
- CalcButton.tsx
- SubmitButton.tsx
- loading
- LoadingBox.tsx
- hooks
- types.ts
- utils
- useOpen.ts
- utilsQuery
- useAddData.ts
- useDeleteData.ts
- useGetData.ts
- useUpdateData.ts
- main.tsx
- pages
- error-page.tsx
- home-page.tsx
- signIn-page.tsx
- redux
- hooks.ts
- reducers
- alertBoxReducer.ts
- loadingReducer.ts
- userReducer.ts
- store.ts
- vite-env.d.ts
tree
Mac 系統直接安裝:
brew install tree
使用就是在專案直接
tree
如果只想要拿到 src 的結構
$ cd src // 切換到 src 的路徑
$ tree
其他指令可以看tree 文檔或是
tree --help
產出來的 README.md 結構會像下面這樣,有著酷酷的線條,是不是比較好閱讀 ^^
.
├── git
│ ├── command-line.md
│ ├── git-and-vim.md
│ └── server-ansyc-gitlab.md
├── javascript
│ ├── cookie-and-localstorage-and-sessionstorage.md
│ ├── debounce-and-memoize.md
│ ├── javascript-note.md
│ ├── lidemyOJ.md
│ ├── q1.md
│ └── upgrade-the-node-version-of-your-project.md
├── lidemy
│ ├── 2020-06-11.md
│ ├── 2020-06-12.md
│ ├── 2020-06-15.md
│ ├── 2020-06-16.md
├── others
│ ├── 11ty-blog.md
│ ├── 2022-work.md
│ ├── 2023-changed-your-name.md
│ └── tree.md
├── php
│ ├── php-change-unicode.md
│ ├── php-member-api.md
│ ├── php-member-cru.md
│ ├── php-member-crud.md
│ ├── php-member-list.md
│ ├── php-member-register.md
│ └── php-replace-str.md
├── posts.json
└── react
├── react-change-state.md
├── react-controller-component-and-uncontrolled.md
├── react-custom-hook.md
├── react-delete-todo.md
├── react-nextjs-mui.md
├── react-render.md
└── redux-toolkit-query.md
以後如果遇到交接或是需要解釋檔案位置的時候,就試試看使用這種方式吧^^
參考資料:
小花
Homebrew tree
[Mac] Homebrew 安裝 tree(樹狀資料夾目錄結構)
[Tools]使用 tree 自動生成目錄結構