{"id":670,"url":"https://github.com/ehmicky/cross-platform-node-guide","last_synced_at":"2025-05-14T09:09:16.751Z","repository":{"id":40571992,"uuid":"166806384","full_name":"ehmicky/cross-platform-node-guide","owner":"ehmicky","description":"📗 How to write cross-platform Node.js code","archived":false,"fork":false,"pushed_at":"2024-10-29T03:35:26.000Z","size":5776,"stargazers_count":1398,"open_issues_count":0,"forks_count":77,"subscribers_count":29,"default_branch":"main","last_synced_at":"2024-10-29T15:35:06.436Z","etag":null,"topics":["api","cli","code-quality","cross-platform","documentation","encoding","es6","javascript","linux","macos","nodejs","operating-system","os","portability","security","server","shell","terminal","unix","windows"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"cc-by-4.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ehmicky.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE.md","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2019-01-21T11:56:30.000Z","updated_at":"2024-10-29T03:35:30.000Z","dependencies_parsed_at":"2023-02-19T11:31:39.389Z","dependency_job_id":"4be2c19f-7a48-43be-aa13-05fe1e311775","html_url":"https://github.com/ehmicky/cross-platform-node-guide","commit_stats":{"total_commits":785,"total_committers":7,"mean_commits":"112.14285714285714","dds":0.04713375796178343,"last_synced_commit":"a6afb78a397aa974aa0e6856c3a7a5dd3c2e113a"},"previous_names":["ehmicky/portable-node-guide"],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ehmicky%2Fcross-platform-node-guide","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ehmicky%2Fcross-platform-node-guide/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ehmicky%2Fcross-platform-node-guide/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ehmicky%2Fcross-platform-node-guide/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ehmicky","download_url":"https://codeload.github.com/ehmicky/cross-platform-node-guide/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248335038,"owners_count":21086497,"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":["api","cli","code-quality","cross-platform","documentation","encoding","es6","javascript","linux","macos","nodejs","operating-system","os","portability","security","server","shell","terminal","unix","windows"],"created_at":"2024-01-05T20:15:28.407Z","updated_at":"2025-04-11T03:27:56.859Z","avatar_url":"https://github.com/ehmicky.png","language":"JavaScript","readme":"\u003cpicture\u003e\n  \u003csource media=\"(prefers-color-scheme: dark)\" srcset=\"https://raw.githubusercontent.com/ehmicky/design/main/cross-platform-nodejs/cross-platform-nodejs_dark.svg\"/\u003e\n  \u003cimg alt=\"cross-platform-nodejs logo\" src=\"https://raw.githubusercontent.com/ehmicky/design/main/cross-platform-nodejs/cross-platform-nodejs.svg\" width=\"500\"/\u003e\n\u003c/picture\u003e\n\n[![License](https://img.shields.io/badge/-CC%20BY%204.0-808080?logo=creativecommons\u0026colorA=404040\u0026logoColor=66cc33)](https://creativecommons.org/licenses/by/4.0/)\n[![Node](https://img.shields.io/badge/-Node.js-808080?logo=node.js\u0026colorA=404040\u0026logoColor=66cc33)](https://www.npmjs.com/package/cross-platform-node-guide)\n[![Mastodon](https://img.shields.io/badge/-Mastodon-808080.svg?logo=mastodon\u0026colorA=404040\u0026logoColor=9590F9)](https://fosstodon.org/@ehmicky)\n[![Medium](https://img.shields.io/badge/-Medium-808080.svg?logo=medium\u0026colorA=404040)](https://medium.com/@ehmicky)\n\nHow to write cross-platform Node.js code.\n\n**Why you should care**: according to the\n[2018 Node.js](https://nodejs.org/en/user-survey-report/#Primary-OS-Distro)\n[user survey](https://nodejs.org/en/user-survey-report/2018-nodejs-user-survey-raw-data.xlsx),\n24% of Node.js developers use Windows locally and 41% use Mac. In production 85%\nuse Linux and 1% use BSD.\n\n# Table of contents\n\n[Summary](docs/summary.md)\n\n## 🤖 [Development environment](docs/1_development_environment/README.md)\n\n- [Node setup](docs/1_development_environment/node_setup.md)\n- [Core utilities](docs/1_development_environment/core_utilities.md)\n- [Testing](docs/1_development_environment/testing.md)\n\n## 📝 [File encoding](docs/2_file_encoding/README.md)\n\n- [Character encoding](docs/2_file_encoding/character_encoding.md)\n- [Newlines](docs/2_file_encoding/newlines.md)\n- [EOF and BOM](docs/2_file_encoding/eof_bom.md)\n\n## 📂 [Filesystem](docs/3_filesystem/README.md)\n\n- [Directory locations](docs/3_filesystem/directory_locations.md)\n- [File paths](docs/3_filesystem/file_paths.md)\n- [Filenames](docs/3_filesystem/filenames.md)\n- [Symlinks](docs/3_filesystem/symlinks.md)\n- [File metadata](docs/3_filesystem/file_metadata.md)\n\n## 💻 [Terminal](docs/4_terminal/README.md)\n\n- [Shell](docs/4_terminal/shell.md)\n- [File execution](docs/4_terminal/file_execution.md)\n- [Package binaries](docs/4_terminal/package_binaries.md)\n- [Environment variables](docs/4_terminal/environment_variables.md)\n\n## 🔒 [Security](docs/5_security/README.md)\n\n- [Permissions](docs/5_security/permissions.md)\n- [Users](docs/5_security/users.md)\n\n## 📡 [Networking / IPC](docs/6_networking_ipc/README.md)\n\n- [Networking](docs/6_networking_ipc/networking.md)\n- [Processes](docs/6_networking_ipc/processes.md)\n- [Signals](docs/6_networking_ipc/signals.md)\n- [Errors](docs/6_networking_ipc/errors.md)\n\n## 🎛️ [System](docs/7_system/README.md)\n\n- [OS identification](docs/7_system/os_identification.md)\n- [System configuration](docs/7_system/system_configuration.md)\n- [Hardware](docs/7_system/hardware.md)\n- [Time](docs/7_system/time.md)\n\n# See also\n\n- [cross-platform-terminal-characters](https://github.com/ehmicky/cross-platform-terminal-characters):\n  All the characters that work on most terminals\n- https://github.com/bcoe/awesome-cross-platform-nodejs\n- https://github.com/Microsoft/nodejs-guidelines\n- https://shapeshed.com/writing-cross-platform-node/\n\n# Support\n\nFor any question, _don't hesitate_ to [submit an issue on GitHub](../../issues).\n\nEveryone is welcome regardless of personal background. We enforce a\n[Code of conduct](CODE_OF_CONDUCT.md) in order to promote a positive and\ninclusive environment.\n\n# Contributing\n\nThis project was made with ❤️. The simplest way to give back is by starring and\nsharing it online.\n\nIf the documentation is unclear or has a typo, please click on the page's `Edit`\nbutton (pencil icon) and suggest a correction.\n\nIf you would like to help us fix an error or add more information, please check\nour [guidelines](CONTRIBUTING.md). Pull requests are welcome!\n\nThanks go to these wonderful people:\n\n\u003c!-- ALL-CONTRIBUTORS-LIST:START --\u003e\n\u003c!-- prettier-ignore --\u003e\n\u003ctable\u003e\n  \u003ctr\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://fosstodon.org/@ehmicky\"\u003e\u003cimg src=\"https://avatars2.githubusercontent.com/u/8136211?v=4\" width=\"100px;\" alt=\"ehmicky\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eehmicky\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/ehmicky/cross-platform-node-guide/commits?author=ehmicky\" title=\"Code\"\u003e💻\u003c/a\u003e \u003ca href=\"#design-ehmicky\" title=\"Design\"\u003e🎨\u003c/a\u003e \u003ca href=\"#ideas-ehmicky\" title=\"Ideas, Planning, \u0026 Feedback\"\u003e🤔\u003c/a\u003e \u003ca href=\"https://github.com/ehmicky/cross-platform-node-guide/commits?author=ehmicky\" title=\"Documentation\"\u003e📖\u003c/a\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://github.com/thatalextaylor\"\u003e\u003cimg src=\"https://avatars3.githubusercontent.com/u/1481643?v=4\" width=\"100px;\" alt=\"thatalextaylor\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003ethatalextaylor\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"#ideas-thatalextaylor\" title=\"Ideas, Planning, \u0026 Feedback\"\u003e🤔\u003c/a\u003e \u003ca href=\"https://github.com/ehmicky/cross-platform-node-guide/commits?author=thatalextaylor\" title=\"Documentation\"\u003e📖\u003c/a\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://github.com/bnoordhuis\"\u003e\u003cimg src=\"https://avatars0.githubusercontent.com/u/275871?v=4\" width=\"100px;\" alt=\"Ben Noordhuis\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eBen Noordhuis\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"#ideas-bnoordhuis\" title=\"Ideas, Planning, \u0026 Feedback\"\u003e🤔\u003c/a\u003e \u003ca href=\"https://github.com/ehmicky/cross-platform-node-guide/commits?author=bnoordhuis\" title=\"Documentation\"\u003e📖\u003c/a\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://github.com/OpenDirective\"\u003e\u003cimg src=\"https://avatars2.githubusercontent.com/u/618922?v=4\" width=\"100px;\" alt=\"Steve Lee\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eSteve Lee\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"#ideas-SteveALee\" title=\"Ideas, Planning, \u0026 Feedback\"\u003e🤔\u003c/a\u003e \u003ca href=\"#talk-SteveALee\" title=\"Talks\"\u003e📢\u003c/a\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"http://tracker1.info/\"\u003e\u003cimg src=\"https://avatars3.githubusercontent.com/u/444316?v=4\" width=\"100px;\" alt=\"Michael J. Ryan\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eMichael J. Ryan\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"#ideas-tracker1\" title=\"Ideas, Planning, \u0026 Feedback\"\u003e🤔\u003c/a\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"http://twitter.com/fabiospampinato\"\u003e\u003cimg src=\"https://avatars1.githubusercontent.com/u/1812093?v=4\" width=\"100px;\" alt=\"Fabio Spampinato\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eFabio Spampinato\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"#ideas-fabiospampinato\" title=\"Ideas, Planning, \u0026 Feedback\"\u003e🤔\u003c/a\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://github.com/AyrA\"\u003e\u003cimg src=\"https://avatars0.githubusercontent.com/u/1301960?v=4\" width=\"100px;\" alt=\"AyrA\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eAyrA\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"#ideas-AyrA\" title=\"Ideas, Planning, \u0026 Feedback\"\u003e🤔\u003c/a\u003e\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://twitter.com/felixfbecker\"\u003e\u003cimg src=\"https://avatars0.githubusercontent.com/u/10532611?v=4\" width=\"100px;\" alt=\"Felix Becker\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eFelix Becker\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/ehmicky/cross-platform-node-guide/commits?author=felixfbecker\" title=\"Documentation\"\u003e📖\u003c/a\u003e \u003ca href=\"#ideas-felixfbecker\" title=\"Ideas, Planning, \u0026 Feedback\"\u003e🤔\u003c/a\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://github.com/niktekusho\"\u003e\u003cimg src=\"https://avatars1.githubusercontent.com/u/18280135?v=4\" width=\"100px;\" alt=\"Nicola Dal Maso\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eNicola Dal Maso\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"#ideas-niktekusho\" title=\"Ideas, Planning, \u0026 Feedback\"\u003e🤔\u003c/a\u003e\u003c/td\u003e\n  \u003c/tr\u003e\n\u003c/table\u003e\n\n\u003c!-- ALL-CONTRIBUTORS-LIST:END --\u003e\n","funding_links":[],"categories":["Resources","JavaScript","cli","资源"],"sub_categories":["Tutorials","教程"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fehmicky%2Fcross-platform-node-guide","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fehmicky%2Fcross-platform-node-guide","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fehmicky%2Fcross-platform-node-guide/lists"}