{"id":18979436,"url":"https://github.com/rayhomie/osser","last_synced_at":"2025-10-07T22:47:08.307Z","repository":{"id":57316650,"uuid":"399010389","full_name":"rayhomie/osser","owner":"rayhomie","description":"Alibaba Cloud OSS interactive command line upload tool","archived":false,"fork":false,"pushed_at":"2021-09-02T02:44:51.000Z","size":372,"stargazers_count":6,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-08-28T09:14:31.286Z","etag":null,"topics":["aliyun","cli","nodejs","oss"],"latest_commit_sha":null,"homepage":"https://www.npmjs.com/package/osser","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/rayhomie.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2021-08-23T07:22:57.000Z","updated_at":"2021-11-08T08:43:40.000Z","dependencies_parsed_at":"2022-08-25T21:11:08.336Z","dependency_job_id":null,"html_url":"https://github.com/rayhomie/osser","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/rayhomie/osser","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rayhomie%2Fosser","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rayhomie%2Fosser/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rayhomie%2Fosser/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rayhomie%2Fosser/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/rayhomie","download_url":"https://codeload.github.com/rayhomie/osser/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rayhomie%2Fosser/sbom","scorecard":{"id":763501,"data":{"date":"2025-08-11","repo":{"name":"github.com/rayhomie/osser","commit":"30a15a4cc39718fb3b3cd4cc0ba33d4c5839d7d0"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":1.7,"checks":[{"name":"Dangerous-Workflow","score":-1,"reason":"no workflows found","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"SAST","score":0,"reason":"no SAST tool detected","details":["Warn: no pull requests merged into dev branch"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"Token-Permissions","score":-1,"reason":"No tokens found","details":null,"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Code-Review","score":0,"reason":"Found 0/30 approved changesets -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Pinned-Dependencies","score":-1,"reason":"no dependencies found","details":null,"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Maintained","score":0,"reason":"0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: MIT License: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'main'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"Vulnerabilities","score":0,"reason":"10 existing vulnerabilities detected","details":["Warn: Project is vulnerable to: GHSA-v6h2-p8h4-qcjw","Warn: Project is vulnerable to: GHSA-9j49-mfvp-vmhm","Warn: Project is vulnerable to: GHSA-78xj-cgh5-2h22","Warn: Project is vulnerable to: GHSA-2p57-rm9w-gvfp","Warn: Project is vulnerable to: GHSA-f8q6-p94x-37v3","Warn: Project is vulnerable to: GHSA-xvch-5gv4-984h","Warn: Project is vulnerable to: GHSA-hrpp-h998-j3pp","Warn: Project is vulnerable to: GHSA-c2qf-rxjj-qqgw","Warn: Project is vulnerable to: GHSA-j8xg-fqg3-53r7","Warn: Project is vulnerable to: GHSA-776f-qx25-q3cc"],"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}}]},"last_synced_at":"2025-08-23T00:05:25.475Z","repository_id":57316650,"created_at":"2025-08-23T00:05:25.475Z","updated_at":"2025-08-23T00:05:25.475Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":278861032,"owners_count":26058632,"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","status":"online","status_checked_at":"2025-10-07T02:00:06.786Z","response_time":59,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":["aliyun","cli","nodejs","oss"],"created_at":"2024-11-08T15:43:44.831Z","updated_at":"2025-10-07T22:47:08.260Z","avatar_url":"https://github.com/rayhomie.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# osser\n\nProvide multi-mode Alibaba Cloud OSS interactive command line upload tool\n\n![Build Status](https://github.com/tj/commander.js/workflows/build/badge.svg)\n[![NPM Version](http://img.shields.io/npm/v/osser.svg?style=flat)](https://www.npmjs.com/package/osser)\n\nRead in other languages: English | [简体中文](./Readme_zh-CN.md)\n\n### Install\n\n```bash\n#Global install dependency\nnpm install -g osser\n\n#Check the version number\nosser -v\n```\n\n### Add configuration file\n\nYou need to put an oss initialization configuration file `osser.js` or `osser.json` in the project root directory. \n\nAccessKey must be configured before it can be used normally.\n\nUse the command `osser init` to initialize the osser.js file in the current directory. If the osser.js file exists in the current directory, it will not be overwritten. If you need to force the rewriting of osser.js, use the command `osser init -- force` or `osser init - f`\n\n[Configuration Item Reference Link](https://help.aliyun.com/document_detail/64097.html)\n\n```js\nmodule.exports = {\n  //Required oss configuration items\n  //Reference: https://help.aliyun.com/document_detail/64097.html\n  region: \"\",\n  accessKeyId: \"\",\n  accessKeySecret: \"\",\n  bucket: \"\",\n\n  //Optional configuration items for upload request\n  fetchOptions: {\n    timeout: 100 * 1000,\n  },\n};\n```\n\n### glob pattern\n\nUse [**glob pattern**](https://github.com/isaacs/node-glob) to match all files that need to be uploaded\n\n```bash\n# Specify to upload all files in the dist folder of the local current directory to the root path of the remote oss bucket\nosser --glob dist/**/*\n\n# Can be abbreviated with -g\nosser -g dist/**/*\n```\n\nMultiple glob strings can be used to match files:\n\n```bash\nosser -g dist/**/* static/**/*.png \n```\n\nThe matching path contains a relative path, and all matched files will be uploaded directly to the specified remote path, and folders will not be recursively created to store these files:\n\n```bash\nosser -g ../dist/**/*\n# For example: (matching character contains relative path../, ./, / etc.)\n# The matched file name is: ../dist/mode/name.js\n# The path to upload to oss is: name.js\n```\n\n```bash\nosser -g ../dist/**/* -d xiaohong \n# The matched file name is: ../dist/mode/name.js\n# The path to upload to oss is: xiaohong/name.js\n```\n\nIf the same file is matched, it will be deduplicated:\n\n```bash\nosser -g **/** dist/**\n# At this time, it will definitely match the same file, then perform de-duplication processing\n```\n\nYou can use the --dir option to specify the bucket root directory for uploading oss:\n\n```bash\n# At this time, the matched files will be uploaded with xiaoming as the root directory\nosser -g dist/**/* --dir xiaoming\n# For example:\n# The matched file name is: dist/mode/name.js\n# The path to upload to oss is: xiaoming/dist/mode/name.js\n```\n\nUse the `--hash` option to add a hash value to the uploaded file name:\n\n```bash\nosser -g dist/**/* --hash\n# The default is an eight-digit hash value\n# dist/mode/name_d8jy7cz1.js\n\nosser -g dist/**/* -h 4\n# You can also specify the number of hash palce\n# dist/mode/name_d8jy.js \n```\n\nUse the `--time` option to add a timestamp to the uploaded file name:\n\n```bash\nosser -g dist/**/* --time\n# dist/mode/name_20210828121131.js \n\n# You can also use the -t abbreviation\nosser -g dist/**/* -t\n\n# You can also specify the hash value and timestamp at the same time\nosser -g dist/**/* -t -h\n# dist/mode/name_d8jy7cz1_20210828121131.js \n```\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frayhomie%2Fosser","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frayhomie%2Fosser","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frayhomie%2Fosser/lists"}