open-index/open-npm huggingface dataset:
npm package: @m_shine_ray/cli-sf
Description: Command Line Interface Of Single Function
Author: MShineRay
Latest version: 0.0.1

# cli-sf
CLI of single function
 
## 用途
  - sf dir-tree # 生成目录结构书  (项目模板选择工具)方便开发人员根据业务选择对应的前端基础代码（脚手架）
  - sf parsewxhtml # 精简微信公众号文章
  - sf lint
  - sf md 
    - readme
  - sf git
    - .gitignore
    - .gitkeep
  - sf file
  - sf dir
  - sf check（项目检测工具）
    
## 使用说明
    
~~~html
    npm i -g @a2z/cli-sf #全局安装
    
    sf # 查看支持等命令
      Commands:
        parsewxhtml    parse wx html
        info           print debugging information about your environment
        dir-tree       generate directory tree under current directory
~~~

### run && debug cli
~~~
  - 1、npm发布后全局执行
      * npm adduser
      * npm publish --access public

    2、在cli内部调试
      * cd cli-sf
      * npm run sf  
~~~

## rules


## Knowledge Point
 * [使用 Node.js 开发简单的脚手架工具](https://mp.weixin.qq.com/s/o4D4DI59GzdeI8KTp0RGuA)
 * [npm发布注意事项](https://blog.csdn.net/gamesdev/article/details/49018629)
 * npm 发布时，需要更改package.json中的版本
 * cli中的模板download的路径，详细阅读对应API
 * [@vue/cli](https://github.com/vuejs/vue-cli/tree/dev/packages/%40vue/cli)
 * [从0开始发布一个无依赖、高质量的 npm 包](https://mp.weixin.qq.com/s/0oDXwz-SBoh3mEymlNxh7w)
 * [前端进阶（13） - 搭建自己的前端脚手架](https://segmentfault.com/a/1190000016481132)
 * [发布npm包时遇到的一些坑](https://www.jianshu.com/p/40f732d91a8c)
    * npm publish --access public
 
## fecli check rules（TODO）
* 解决方案
    * 基于eslint扩展
    * 基于directory-tree扩展
* 规则详情    
    * 校验目录结构
        * 是否缺失
        * 是否新增
        * 是否目录层级过深
    * 校验文件
        * 是否缺失
        * 校验文件内容
            * 是否被篡改
            * 是否缺失
            * 涉及的文件
                readme.md
                package.json
    * 校验命名规范
        * 文件夹命名
        * 文件命名
        * vue组件命名
    
    * node生成目录结构数组
        * 忽略文件夹
        * 忽略文件
        * 递归遍历
        * 生成数组
    
    
## Log

### v0.0.3
* add--命令--dir-tree（生成目录结构树）
    * 支持.js、.css、.vue、.html文件注释解析
    * 注释约定 文件第一行
       * /**@desc 注释内容\*/
       * HTML注释\<!-- @desc 注释内容-->

### v0.0.2
*
### v0.0.1
* init
 
## TODO

   * 完善命令
        * 校验规范相关命令
        * 校验开发环境
            * node版本
            * vue-cli版本
            * webpack版本
   * 完善模板
        * 如何动态注入到项目中？

## Q&A
Q1: 如何实现生成一个文件（.md），文件内容是项目目录树状结构及对应的目录或文件说明，
    能忽略统计目录(wwwroot、.idea、dist、node_modules、test)、文件(*.png)
    参考：
# 目录结构
```
|--.
  |--LICENSE
  |--README.md
  |--bin
  |  |--sf.js
  |--directoryTreeDesc.md
  |--lib
  |  |--rules
  |  |  |--base.json
  |  |  |--config
  |  |  |  |--dir-structure.json
  |  |--util
  |  |  |--checkUtils.js
  |  |  |--directory-tree.js
  |  |  |--enhanceErrorMessages.js
  |  |  |--fileUtils.js
  |  |  |--note.js
  |  |  |--utils.js
  |--package-lock.json
  |--package.json
  |--src
```
Q2:  目录层级

     根目录|--
    一级目录  |--
    二级目录    |   |--
    
Q3: 生成的目录树，顺序与真实的顺序不一致

Q4: 根目录名称无法获得   

## Function
npm package: @ma-ve/simple-file-watch
Description: Simple-file-watch
Author: Mave
Latest version: 3.0.2

Simple-file-watch

Install: 

    npm install -g simple-file-watch

Simple nodejs cli command that will watch for changes in a directory or directories, recursively or not,
and execute a command on changes. The delay set by `--delay` will prevent any
execution of the command until the delay has passed. This is useful if the command
being executed alters another file in the directory being watched. Otherwise there will be
an infinite loop of file changes and executions.

Usage example:

    simple-file-watch --delay=2000 --extension='js' --path='.' --path='test' --command='ls -l' --recursive --silence

Flags:

    --delay=2000 // delay in milliseconds before executing command on file change
    --extension='js' // only execute command on files with this extension. Default is all files
    --path='.' // path to watch for changes. Multiple paths are allowed. Default is current directory
    --file='src/manifest.json' // target specific file to watch. Multiple files are allowed. Cannot be used with extension or path inputs
    --command='ls -l' // command to execute on file change  
    --recursive // watch subdirectories
    --silence // no output to stdout
    --check-contents // will do a file contents comparison to its last change, to prevent executions where nothing has changed

If you run the command without any params, it will watch any file changes in 
current directory, and output the file changed to stdout. 

Note: There is max on number of files you can watch. See: 

http://stackoverflow.com/questions/16748737/grunt-watch-error-waiting-fatal-error-watch-enospc

License MIT