美文网首页
重写 vscode-file-templates-ext

重写 vscode-file-templates-ext

作者: 一半晴天 | 来源:发表于2018-05-13 17:53 被阅读14次

在 VSCode 找文件模板插件时发现了此插件。想来功能不是很复杂,于是 Fork 了一份用来学习修改。地址如下:
vscode-file-templates-ext
整个重构部分分为两大块。一个是项目配置的更新,一个是代码的重构。

项目配置更新

由于原仓库已经 2年没有更新(因为原来的功能确实已经够用了。),不过我作为新学,还是想着先把配置更新一下。

  1. .vscode/launch.json 根据最新生成的 Hello World 中的配置,将原来的配置修改一下。

  2. .vscode/tasks.json 同上。

  3. tsconfig.json 中的配置更新。
    主要更新 targetes6 增加对 es6 库的依赖。rootDir 改为 src

"compilerOptions": {
        "module": "commonjs",
        "target": "es6",
        "lib": [
            "es6"
        ],
        "outDir": "out",
        "sourceMap": true,
        "rootDir": "src"
    },
  1. 相应的将原来的 tests 目录移到 src 目录。

  2. 相应的将 package.json 中的 main 入口改为 "main": "./out/extension",

  3. 参照新插件项目的配置,更新 package.json 中的 scripts 配置:

 "scripts": {
    "lint": "tslint -c tslint.json src/**/*.ts",
    "vscode:prepublish": "npm run compile",
    "compile": "tsc -p ./",
    "watch": "tsc -watch -p ./",
    "postinstall": "node ./node_modules/vscode/bin/install"
  },
  1. 更新依赖,增加 fs-extra 依赖。

  2. 删除原项目中的 types 目录,改为在依赖上添加

    "@types/mocha": "^2.2.42",
    "@types/node": "^7.0.43",
  1. 因为后面要用到 async/await 的语法支持。所以也提高了对 vscode.engines 版本的依赖:
  "engines": {
    "vscode": "^1.18.0"
  },

代码重构。

将函数改为类

原来的插件逻辑的主要代码是在一个单一的函数中的。 为了方便拆分函数。还是按类来组织比较好,所以后面提取成了类。

将原来的 Thenable 方法的回调,及 fs 异步写法使用 async/await 改写。

重构之后代码清晰更好看一些了。当然这主要是 async/await 的功劳。

重构前代码见:
https://github.com/banxi1988/vscode-file-templates-ext/tree/1.2.0

重构后代码见:
https://github.com/banxi1988/vscode-file-templates-ext/commit/c96bf7a784d6e65032fd62a1ce5b184f4365bb5b

相关文章

  • 重写 vscode-file-templates-ext

    在 VSCode 找文件模板插件时发现了此插件。想来功能不是很复杂,于是 Fork 了一份用来学习修改。地址如下:...

  • 重写,重写,重写 - 草稿

    重要的事情说三次,这是我本该早就发布的文章,由于我的失误,于是乎,现在写这篇文的时候,带着淡淡的忧伤。 今年,最快...

  • GeekBand OC 7. 多态

    运行时多态 重写override 重写方法 没有重写的方法会被重写 没有重写的方法中调用已经重写的方法会调用重写后...

  • Swift 重写override和重载overload

    1.重写override 重写是子类继承父类,重写父类的方法。 重写方法的参数列表必须完全与被重写的方法相同。重写...

  • swift overrid 跟 overload

    1.重写override 重写是子类继承父类,重写父类的方法。 重写方法的参数列表必须完全与被重写的方法相同。重写...

  • apache URL重写

    URL重写 URL rewrite介绍 URL重写 一、URL重写介绍 Apached的重写功能,即是mod_re...

  • swift中的继承

    只有类支持继承 重写实例方法、下标 重写类型方法、下标 用class修饰的可以被重写 重写属性 1.重写实例属性 ...

  • 第三章所有对象的通用方法

    目录 重写equals方法时遵守通用约定 重写equals方法时同时也要重写hashcode方法 始终重写 toS...

  • 重写(=覆盖)、重载

    override(重写、覆盖): 子类在继承父类时,重写(重新实现)父类中的方法。 重写(覆盖)的规则: 重写方法...

  • 为什么重写equals一定要重写hashcode?

    两篇文章搞懂为什么重写equals一定要重写hashcode? 为什么重写equals一定要重写hashcode?...

网友评论

      本文标题:重写 vscode-file-templates-ext

      本文链接:https://www.haomeiwen.com/subject/psvldftx.html