前端架构: 脚手架开发流程中的难点梳理

脚手架的开发流程

1 )开发流程

  • 创建 npm 项目
  • 创建脚手架入口文件,最上方添加:
    • #!/usr/bin/env node
  • 配置 package.json, 添加 bin 属性
  • 编写脚手架代码
  • 将脚手架发布到 npm

2 )使用流程

  • 安装脚手架

    • npm install -g your-own-cli
  • 使用脚手架

    • your-own-cli

3 )脚手架开发难点

  • 分包: 将复杂的系统拆分成若干个模块,并且合并成一个复杂系统
  • 命令注册,如:
    • $ vue create
    • $ vue add
    • $ vue invoke
    • 这里需要了解,如何注册命令,以及执行命令
  • 参数解析
    • 如:vue command [options] <params>

    • options全称: --version, --help

    • options简写:-V, -h

    • 带params的options: --path /Users/xxx/.../vue-test

    • 帮助文档:

      • global help 是指对主命令进行帮助

        • Usage
        • Options
        • Commands
      • vue的帮助文档示例,这个属于 global help

        $ vue
        Usage: vue <command> [options]
        
        Options:
          -V, --version                              output the version number
          -h, --help                                 output usage information
        
        Commands:
          create [options] <app-name>                create a new project powered by vue-cli-service
          add [options] <plugin> [pluginOptions]     install a plugin and invoke its generator in an already created project
          invoke [options] <plugin> [pluginOptions]  invoke the generator of a plugin in an already created project
          inspect [options] [paths...]               inspect the webpack config in a project with vue-cli-service
          serve [options] [entry]                    serve a .js or .vue file in development mode with zero config
          build [options] [entry]                    build a .js or .vue file in production mode with zero config
          ui [options]                               start and open the vue-cli ui
          init [options] <template> <app-name>       generate a project from a remote template (legacy API, requires @vue/cli-init)
          config [options] [value]                   inspect and modify the config
          upgrade [semverLevel]                      upgrade vue cli service / plugins (default semverLevel: minor)
          info                                       print debugging information about your environment
        
          Run vue <command> --help for detailed usage of given command.
        
        • 可见,可通过 vue -V, 或 vue -h 可查看具体的信息
        • global help 只能表示主命令的用法,对于子命令,也同样需要
      • command help 子命令帮助

        • Usage
        • Options
      • 子命令的帮助信息,举例

        $ vue create
        Usage: create [options] <app-name>
        
        create a new project powered by vue-cli-service
        
        Options:
          -p, --preset <presetName>       Skip prompts and use saved or remote preset
          -d, --default                   Skip prompts and use default preset
          -i, --inlinePreset <json>       Skip prompts and use inline JSON string as preset
          -m, --packageManager <command>  Use specified npm client when installing dependencies
          -r, --registry <url>            Use specified npm registry when installing dependencies (only for npm)
          -g, --git [message]             Force git initialization with initial commit message
          -n, --no-git                    Skip git initialization
          -f, --force                     Overwrite target directory if it exists
          -c, --clone                     Use git clone when fetching remote preset
          -x, --proxy                     Use specified proxy when creating project
          -b, --bare                      Scaffold project without beginner instructions
          --skipGetStarted                Skip displaying "Get started" instructions
          -h, --help                      output usage information
        
          Missing required argument <app-name>.
        
    • 同样,还有很多,如:

      • 命令行交互: 可以选择
      • 日志打印: 标准打印
      • 命令行文字变色: 错误红色,警告黄色
      • 网络通信:HTTP/WebSocket
      • 文件处理
      • ...
相关推荐
m0_748239332 分钟前
前端(Ajax)
前端·javascript·ajax
Fighting_p6 分钟前
【记录】列表自动滚动轮播功能实现
前端·javascript·vue.js
前端Hardy8 分钟前
HTML&CSS:超炫丝滑的卡片水波纹效果
前端·javascript·css·3d·html
技术思考者11 分钟前
HTML速查
前端·css·html
缺少动力的火车12 分钟前
Java前端基础—HTML
java·前端·html
time_silence24 分钟前
微服务——技术选型与框架
微服务·架构
Domain-zhuo25 分钟前
Git和SVN有什么区别?
前端·javascript·vue.js·git·svn·webpack·node.js
dbcat官方27 分钟前
1.微服务灰度发布(方案设计)
java·数据库·分布式·微服务·中间件·架构
雪球不会消失了30 分钟前
SpringMVC中的拦截器
java·开发语言·前端
李云龙I40 分钟前
解锁高效布局:Tab组件最佳实践指南
前端