CLI for generating, building, and releasing oclif CLIs. Built by Salesforce.
Installations
npm install oclif
Developer Guide
Typescript
Yes
Module System
CommonJS
Min. Node Version
>=18.0.0
Node Version
22.13.1
NPM Version
10.9.2
Score
68.8
Supply Chain
88.8
Quality
97.3
Maintenance
100
Vulnerability
98.6
License
Releases
Contributors
Languages
TypeScript (94.22%)
EJS (4.71%)
JavaScript (1.03%)
Batchfile (0.03%)
Developer
Download Statistics
Total Downloads
16,366,268
Last Day
23,772
Last Week
114,417
Last Month
483,243
Last Year
7,022,380
GitHub Statistics
9,098 Stars
2,309 Commits
323 Forks
66 Watching
5 Branches
74 Contributors
Package Meta Information
Latest Version
4.17.21
Package Id
oclif@4.17.21
Unpacked Size
268.79 kB
Size
55.30 kB
File Count
105
NPM Version
10.9.2
Node Version
22.13.1
Publised On
30 Jan 2025
Total Downloads
Cumulative downloads
Total Downloads
16,366,268
Last day
-6.6%
23,772
Compared to previous day
Last week
-7.1%
114,417
Compared to previous week
Last month
6.8%
483,243
Compared to previous month
Last year
38.5%
7,022,380
Compared to previous year
Daily Downloads
Weekly Downloads
Monthly Downloads
Yearly Downloads
Dependencies
24
Dev Dependencies
34
oclif
CLI
oclif
CLI- 🗒 Description
- 🚀 Getting Started Tutorial
- 📌 Requirements
- 📌 Migrating from V1
- 🏗 Usage
- 📚 Examples
- 🔨 Commands
- Command Topics
- 🚀 Contributing
- 🏭 Related Repositories
- 🦔 Learn More
🗒 Description
This is the oclif
CLI for the Open CLI Framework, that supports the development of oclif plugins and CLIs.
See the docs for more information.
🚀 Getting Started Tutorial
The Getting Started tutorial is a step-by-step guide to introduce you to oclif. If you have not developed anything in a command line before, this tutorial is a great place to get started.
See Usage below for an overview of the oclif
CLI.
📌 Requirements
Currently, Node 18+ is supported. We support the LTS versions of Node. You can add the node package to your CLI to ensure users are running a specific version of Node.
📌 Migrating from V1
If you have been using version 1 of the oclif
CLI there are some important differences to note when using the latest version.
Breaking Changes
oclif multi
,oclif plugin
, andoclif single
have all been removed in favor ofoclif generate
, which generates an oclif based CLI using the hello-world example repo.- The reason is that there's not enough of a meaningful difference between a "multi command cli", a "single command cli", and a "plugin" to justify the maintenance cost. The generated CLI can be easily used for any of those use cases.
oclif hook
is nowoclif generate:hook
oclif command
is nowoclif generate:command
New Commands
Version 2 now includes all the commands from the oclif-dev
CLI. This means that you can now use a single CLI for all your oclif needs. These commands include:
oclif manifest
oclif pack
oclif pack:deb
oclif pack:macos
oclif pack:win
oclif upload
(formerly known asoclif-dev publish
)oclif upload:deb
(formerly known asoclif-dev publish:deb
)oclif upload:macos
(formerly known asoclif-dev publish:macos
)oclif upload:win
(formerly known asoclif-dev publish:win
)oclif readme
🏗 Usage
Creating a CLI:
1$ npx oclif generate mynewcli 2? npm package name (mynewcli): mynewcli 3$ cd mynewcli 4$ ./bin/run.js --version 5mynewcli/0.0.0 darwin-x64 node-v9.5.0 6$ ./bin/run.js --help 7USAGE 8 $ mynewcli [COMMAND] 9 10COMMANDS 11 hello 12 help display help for mynewcli 13 14$ ./bin/run.js hello world 15hello world! (./src/commands/hello/world.ts)
📚 Examples
🔨 Commands
Command Topics
oclif generate
- Generate a new CLIoclif help
- Display help for oclif.oclif init
- Initialize a new oclif CLIoclif manifest
- Generates plugin manifest json (oclif.manifest.json).oclif pack
- Package an oclif CLI into installable artifacts.oclif promote
- Promote CLI builds to a S3 release channel.oclif readme
- Adds commands to README.md in current directory.oclif upload
- Upload installable CLI artifacts to AWS S3.
🚀 Contributing
See the contributing guide.
🏭 Related Repositories
- @oclif/core - Base library for oclif. This can be used directly without the generator.
- @oclif/test - Test helper for oclif.
🦔 Learn More
No vulnerabilities found.
Reason
30 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10
Reason
no dangerous workflow patterns detected
Reason
no binaries found in the repo
Reason
license file detected
Details
- Info: project has a license file: LICENSE:0
- Info: FSF or OSI recognized license: MIT License: LICENSE:0
Reason
0 existing vulnerabilities detected
Reason
Found 2/9 approved changesets -- score normalized to 2
Reason
no effort to earn an OpenSSF best practices badge detected
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
Reason
detected GitHub workflow tokens with excessive permissions
Details
- Warn: no topLevel permission defined: .github/workflows/automerge.yml:1
- Warn: no topLevel permission defined: .github/workflows/create-github-release.yml:1
- Warn: no topLevel permission defined: .github/workflows/failureNotifications.yml:1
- Warn: no topLevel permission defined: .github/workflows/notify-slack-on-pr-open.yml:1
- Warn: no topLevel permission defined: .github/workflows/onRelease.yml:1
- Warn: no topLevel permission defined: .github/workflows/stale.yml:1
- Warn: no topLevel permission defined: .github/workflows/test.yml:1
- Info: no jobLevel write permissions found
Reason
dependency not pinned by hash detected -- score normalized to 0
Details
- Warn: third-party GitHubAction not pinned by hash: .github/workflows/failureNotifications.yml:15: update your workflow using https://app.stepsecurity.io/secureworkflow/oclif/oclif/failureNotifications.yml/main?enable=pin
- Warn: third-party GitHubAction not pinned by hash: .github/workflows/notify-slack-on-pr-open.yml:23: update your workflow using https://app.stepsecurity.io/secureworkflow/oclif/oclif/notify-slack-on-pr-open.yml/main?enable=pin
- Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/onRelease.yml:19: update your workflow using https://app.stepsecurity.io/secureworkflow/oclif/oclif/onRelease.yml/main?enable=pin
- Warn: third-party GitHubAction not pinned by hash: .github/workflows/onRelease.yml:22: update your workflow using https://app.stepsecurity.io/secureworkflow/oclif/oclif/onRelease.yml/main?enable=pin
- Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/stale.yml:11: update your workflow using https://app.stepsecurity.io/secureworkflow/oclif/oclif/stale.yml/main?enable=pin
- Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/test.yml:161: update your workflow using https://app.stepsecurity.io/secureworkflow/oclif/oclif/test.yml/main?enable=pin
- Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/test.yml:162: update your workflow using https://app.stepsecurity.io/secureworkflow/oclif/oclif/test.yml/main?enable=pin
- Warn: third-party GitHubAction not pinned by hash: .github/workflows/test.yml:166: update your workflow using https://app.stepsecurity.io/secureworkflow/oclif/oclif/test.yml/main?enable=pin
- Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/test.yml:185: update your workflow using https://app.stepsecurity.io/secureworkflow/oclif/oclif/test.yml/main?enable=pin
- Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/test.yml:186: update your workflow using https://app.stepsecurity.io/secureworkflow/oclif/oclif/test.yml/main?enable=pin
- Warn: third-party GitHubAction not pinned by hash: .github/workflows/test.yml:190: update your workflow using https://app.stepsecurity.io/secureworkflow/oclif/oclif/test.yml/main?enable=pin
- Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/test.yml:26: update your workflow using https://app.stepsecurity.io/secureworkflow/oclif/oclif/test.yml/main?enable=pin
- Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/test.yml:27: update your workflow using https://app.stepsecurity.io/secureworkflow/oclif/oclif/test.yml/main?enable=pin
- Warn: third-party GitHubAction not pinned by hash: .github/workflows/test.yml:31: update your workflow using https://app.stepsecurity.io/secureworkflow/oclif/oclif/test.yml/main?enable=pin
- Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/test.yml:75: update your workflow using https://app.stepsecurity.io/secureworkflow/oclif/oclif/test.yml/main?enable=pin
- Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/test.yml:76: update your workflow using https://app.stepsecurity.io/secureworkflow/oclif/oclif/test.yml/main?enable=pin
- Warn: third-party GitHubAction not pinned by hash: .github/workflows/test.yml:81: update your workflow using https://app.stepsecurity.io/secureworkflow/oclif/oclif/test.yml/main?enable=pin
- Warn: third-party GitHubAction not pinned by hash: .github/workflows/test.yml:85: update your workflow using https://app.stepsecurity.io/secureworkflow/oclif/oclif/test.yml/main?enable=pin
- Warn: third-party GitHubAction not pinned by hash: .github/workflows/test.yml:91: update your workflow using https://app.stepsecurity.io/secureworkflow/oclif/oclif/test.yml/main?enable=pin
- Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/test.yml:113: update your workflow using https://app.stepsecurity.io/secureworkflow/oclif/oclif/test.yml/main?enable=pin
- Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/test.yml:114: update your workflow using https://app.stepsecurity.io/secureworkflow/oclif/oclif/test.yml/main?enable=pin
- Warn: third-party GitHubAction not pinned by hash: .github/workflows/test.yml:120: update your workflow using https://app.stepsecurity.io/secureworkflow/oclif/oclif/test.yml/main?enable=pin
- Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/test.yml:49: update your workflow using https://app.stepsecurity.io/secureworkflow/oclif/oclif/test.yml/main?enable=pin
- Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/test.yml:50: update your workflow using https://app.stepsecurity.io/secureworkflow/oclif/oclif/test.yml/main?enable=pin
- Warn: third-party GitHubAction not pinned by hash: .github/workflows/test.yml:54: update your workflow using https://app.stepsecurity.io/secureworkflow/oclif/oclif/test.yml/main?enable=pin
- Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/test.yml:136: update your workflow using https://app.stepsecurity.io/secureworkflow/oclif/oclif/test.yml/main?enable=pin
- Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/test.yml:137: update your workflow using https://app.stepsecurity.io/secureworkflow/oclif/oclif/test.yml/main?enable=pin
- Warn: third-party GitHubAction not pinned by hash: .github/workflows/test.yml:141: update your workflow using https://app.stepsecurity.io/secureworkflow/oclif/oclif/test.yml/main?enable=pin
- Warn: npmCommand not pinned by hash: .github/workflows/test.yml:91
- Warn: npmCommand not pinned by hash: .github/workflows/test.yml:120
- Info: 0 out of 16 GitHub-owned GitHubAction dependencies pinned
- Info: 0 out of 12 third-party GitHubAction dependencies pinned
- Info: 0 out of 2 npmCommand dependencies pinned
Reason
project is not fuzzed
Details
- Warn: no fuzzer integrations found
Reason
SAST tool is not run on all commits -- score normalized to 0
Details
- Warn: 0 commits out of 23 are checked with a SAST tool
Score
5
/10
Last Scanned on 2025-01-20
The Open Source Security Foundation is a cross-industry collaboration to improve the security of open source software (OSS). The Scorecard provides security health metrics for open source projects.
Learn More