{"id":22433592,"url":"https://github.com/gavinning/dir","last_synced_at":"2025-08-02T19:08:38.392Z","repository":{"id":18758215,"uuid":"21970629","full_name":"gavinning/dir","owner":"gavinning","description":"for nodejs. 用于遍历文件夹目录及子目录","archived":false,"fork":false,"pushed_at":"2014-07-25T07:19:23.000Z","size":152,"stargazers_count":5,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-05-02T11:17:43.311Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/gavinning.png","metadata":{"files":{"readme":"Readme.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2014-07-18T06:40:55.000Z","updated_at":"2019-09-26T01:54:01.000Z","dependencies_parsed_at":"2022-08-30T09:12:04.131Z","dependency_job_id":null,"html_url":"https://github.com/gavinning/dir","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/gavinning/dir","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gavinning%2Fdir","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gavinning%2Fdir/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gavinning%2Fdir/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gavinning%2Fdir/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/gavinning","download_url":"https://codeload.github.com/gavinning/dir/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gavinning%2Fdir/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":262697269,"owners_count":23349893,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-12-05T22:15:23.735Z","updated_at":"2025-06-30T02:06:38.569Z","avatar_url":"https://github.com/gavinning.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"#Linco.dir\n\n[![ilinco icon](http://ilinco.com/images/logo.png)](http://www.ilinco.com)\n\nfor nodejs. 用于遍历文件夹目录及子目录\n\nauthor: gavinning\n\nhomePage: [http://www.ilinco.com](http://www.ilinco.com)\n\nMore: [https://github.com/gavinning/dir](https://github.com/gavinning/dir)\n\n\n##安装\n```\nnpm install linco.dir --save\n```\n\n\n##示例\n```\nvar dir = require('linco.dir');\n// opt参数为可选，不设置将执行默认规则，以下为默认规则\nvar opt = {\n\tdeep: true,\n\tfilterFile\t\t: ['^.*', '.svn-base', '_tmp', '副本', 'desktop.ini', '.DS_Store'],\n\tfilterFolder\t: ['^.git$', '^.svn$'],\n\tonlyFile\t\t: [],\n\tonlyFolder\t\t: []\n}\n\n\nvar obj = dir('/Users/username/Documents/app');\n// or\nvar obj = dir('/Users/username/Documents/app', opt);\n\n// 存放文件的数组\nconsole.log(obj.files)\n// 存放文件夹的数组\n// 包含参数文件夹\nconsole.log(obj.folders)\n```\n\n##opt参数详解\n```\nvar opt = {\n\tdeep: true,\n\tfilterFile\t\t: [],\n\tfilterFolder\t: [],\n\tonlyFile\t\t: [],\n\tonlyFolder\t\t: []\n}\n\n// 是否递归子目录，默认为true\n// 如果值为false，将只返回一级文件夹的文件及文件夹信息\nopt.deep: Boolean\n\n/*\n * 需要过滤的文件，默认为空数组\n * 过滤规则为正则表达式过滤\n * 内部实现：src.match(_filter)\n * 支持*通配符，*将会被视作通配符转换为[\\s\\S]+\n * eg: filterFile = ['.png']\n * eg: filterFile = ['.png$']\n * eg: filterFile = ['*.png']\n * eg: filterFile = ['*.png$']\n * eg: filterFile = [new RegExp('.png$')]\n * eg: filterFile = [/\\.png$/]\n * 以上6种方式都是过滤png格式文件的方法\n * 6种限制的严格程度不同，如果严格过滤，推荐2,4,5,6过滤方式\n * 过滤规则详解，请见下文\u003c过滤过则详解\u003e\n */\nopt.filterFile: Array\n// 需要过滤的文件夹，默认为空数组\n// 过滤规则同上\nopt.filterFolder: Array\n\n// 将返回符合条件的文件，其他文件将被抛弃\n// 过滤规则同上\nopt.onlyFile: Array\n\n// 将返回符合条件的文件夹，其他文件夹将被抛弃\n// ！慎用，将不会递归被过滤的文件夹子目录\n// 当使用该规则的时候请确定你已完全理解此项过滤\n// 过滤规则同上\nopt.onlyFolder: Array\n\n\n```\n\n##过滤规则详解\n`opt.filterFile = [String, RegExp]`\n\n所有过滤，数组内的元素可以是字符串，和正则表达式\n\n\n#### 数组元素为正则表达式对象\n\n如果数组元素为正则表达式对象，则直接执行过滤，不进行任何转换\n\n```\nreturn src.match(reg);\n```\n\n**如果以一定的正则基础推荐直接写正则过滤，更严格更精确**\n\n\n#### 数组元素为字符串\n如果元素为字符串，内部将会根据此字符串创建正则对象：\n\n1- 首先会转换通配符*\n\n```\nstring = string.replace('*.', '[\\\\s\\\\S]+\\\\.');\nstring = string.replace('.*', '\\\\.[\\\\s\\\\S]+');\n```\n\n2- 创建正则表达式对象\n\n```\nvar reg = new RegExp(string);\nreturn src.match(reg);\n```\n\n\n\n\n#### 数组元素为字符串基础过滤规则示例\n * eg: filterFile = ['.png']\n * eg: filterFile = ['.png$']\n * eg: filterFile = ['*.png']\n * eg: filterFile = ['*.png$']\n * eg: filterFile = [new RegExp('.png$')]\n * eg: filterFile = [/\\.png$/]\n \n```\n/* \n * 过滤包含.png的文件 - 非严格，不精确\n * .pngs的文件也会被过滤，类似的文件也会被过滤\n * .png.js也会被过滤\n */\nfilterFile = ['.png']\n```\n\n \n```\n/* \n * 过滤以.png结尾的文件 - 严格，精确，严格正则过滤\n * .pngs的文件不会被过滤，类似的文件也不会被过滤\n * .png.js不会被过滤\n * .apng也不会被过滤\n */\nfilterFile = ['.png$']\n```\n \n```\n/* \n * 过滤包含.png文件 - 非严格，不精确\n * 同第1种过滤方式\n */\nfilterFile = ['*.png']\n```\n\n\n \n```\n/* \n * 过滤以.png结尾的文件 - 严格，精确\n * 同第2种过滤方式\n */\nfilterFile = ['*.png$']\n```\n\n#### 常用过滤\n\n```\nvar opt = {\n\tdeep: true,\n\t// 过滤以.开头的文件，通常为系统文件或配置文件\n\tfilterFile\t\t: ['^.*'],\n\t// 过滤svn和git信息目录\n\tfilterFolder\t: ['^.svn$', '^.git$'],\n\tonlyFile\t\t: [],\n\tonlyFolder\t\t: []\n}\n\n\nvar opt = {\n\tdeep: true,\n\tfilterFile\t\t: ['.svn-base', '.DS_Store' '_tmp', '副本'],\n\tfilterFolder\t: ['.git', '.svn'],\n\tonlyFile\t\t: [],\n\tonlyFolder\t\t: []\n}\n\n\n```","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgavinning%2Fdir","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgavinning%2Fdir","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgavinning%2Fdir/lists"}