1、得到process.argv 得到参数

image.png

2、修改hahaya1项目的index.js

  1. #!/usr/bin/env node
  2. module.exports = {
  3. sum(a, b) {
  4. return a + b + 1
  5. },
  6. init({ _option, param }) {
  7. console.log('执行命令', _option, param)
  8. }
  9. }

3、引入init命令,并执行

  1. #!/usr/bin/env node
  2. const argv = require('process').argv
  3. console.log(argv)
  4. const lib = require('hahaya1')
  5. console.log('sum', lib.sum(2, 3))
  6. console.log('t2eswwt11')
  7. const command = argv[2]
  8. if (command) {
  9. if (lib[command]) {
  10. lib[command]()
  11. } else {
  12. console.log('command无效')
  13. }
  14. } else {
  15. console.log('请输入command')
  16. }

4、处理参数

  1. ...
  2. //解析参数
  3. const options = argv.splice(3)
  4. console.log(options)
  5. const [option, param] = options
  6. console.log(option, param)
  7. const _option = option.replace(/--/g, '')
  8. const command = argv[2]
  9. if (command) {
  10. if (lib[command]) {
  11. lib[command]({ _option, param })
  12. } else {
  13. console.log('command无效')
  14. }
  15. } else {
  16. console.log('请输入command')
  17. }

image.png

5、执行版本

  1. #!/usr/bin/env node
  2. const argv = require('process').argv
  3. console.log(argv)
  4. const lib = require('hahaya1')
  5. console.log('sum', lib.sum(2, 3))
  6. console.log('t2eswwt11')
  7. const command = argv[2]
  8. //解析参数
  9. const options = argv.splice(3)
  10. if (options.length) {
  11. console.log(options)
  12. const [option, param] = options
  13. console.log(option, param)
  14. const _option = option.replace(/--/g, '')
  15. if (command) {
  16. if (lib[command]) {
  17. lib[command]({ _option, param })
  18. } else {
  19. console.log('command无效')
  20. }
  21. } else {
  22. console.log('请输入command')
  23. }
  24. }
  25. if (command.startsWith('--') || command.startsWith('-')) {
  26. const gloabalOption = command.replace(/--|-/g, '')
  27. console.log(gloabalOption)
  28. if (gloabalOption === 'version' || gloabalOption === 'v') {
  29. console.log('1.0.0')
  30. }
  31. }

image.png