摘要:本次給大家?guī)淼姆窒硎顷P(guān)于插件的一些經(jīng)驗(yàn),分享的內(nèi)容是我寫的一個(gè)插件。為了解決上面這個(gè)問題,我開發(fā)了這個(gè)插件。
本次給大家?guī)淼姆窒硎顷P(guān)于VS Code插件的一些經(jīng)驗(yàn),分享的內(nèi)容是我寫的一個(gè)插件:view-readme。
開發(fā)背景在本地安裝好所有npm包后,有的時(shí)候想看看某個(gè)模塊的文檔,了解其特性以及如何使用。于是打開node_modules文件夾,大家都知道,這個(gè)文件夾里面的文件是非常多的,很難定位到我們想看的模塊,并且這么多的目錄樹展開后,嚴(yán)重影響到編輯的使用。
為了解決上面這個(gè)問題,我開發(fā)了view-readme這個(gè)插件。在任何時(shí)候你想查看npm包的文檔時(shí),按快捷鍵并輸入想要查看的模塊名稱,自動(dòng)為你打開該模塊的README.md文檔。
環(huán)境準(zhǔn)備1.安裝Yeoman和VS Code腳手架
npm install -g yo generator-code
2.生成項(xiàng)目模版
yo code
3.配置選項(xiàng)
選擇第二項(xiàng)(JavaScript)
擴(kuò)展名稱
擴(kuò)展唯一標(biāo)識(shí)
擴(kuò)展描述
發(fā)布作者
是否創(chuàng)建git倉(cāng)庫(kù)
4.模版目錄
. |____.eslintrc.json |____.gitignore |____.vscode // vscode配置目錄 | |____extensions.json | |____launch.json | |____settings.json |____.vscodeignore // 發(fā)布時(shí)過濾掉的文件 |____CHANGELOG.md // 發(fā)布記錄 |____extension.js // 插件入口 |____jsconfig.json // js規(guī)則 |____package.json // 資源配置 |____README.md // 文檔 |____test // 自動(dòng)化測(cè)試目錄 | |____extension.test.js | |____index.js |____vsc-extension-quickstart.md
5.運(yùn)行
打開新窗口
加載插件目錄
進(jìn)入調(diào)試
Launch Extension
打開命令面板(cmd+shift+p)
輸入hello world,回車
彈窗Hello World提示
插件代碼資源配置介紹
{ "name": "vscode-view-readme", "displayName": "view-readme", "description": "Open readme.md at nearly path of node_modules quickly. ", "version": "0.1.3", "publisher": "ansenhuang", "icon": "images/logo128.png", "engines": { "vscode": "^1.10.0" }, "galleryBanner": { // 發(fā)布后的預(yù)覽頁(yè)配置 "color": "#eff1f3", // banner顏色 "theme": "light" // 主題(light, dark) }, "categories": [ "Other" // 插件分類 ], "activationEvents": [ // 啟動(dòng)項(xiàng) "onCommand:viewReadme.showLocal" // 觸發(fā)這個(gè)命令時(shí)啟動(dòng) ], "main": "./src/extension", // 插件入口 "contributes": { // 配置 "configuration": { // 定義默認(rèn)參數(shù) "type": "object", "title": "View readme configuration", "properties": { // 這里定義的參數(shù)可以在vscode中取到 "view-readme.savePath": { "type": "string", "default": "", "description": "Save in local path when request remote." }, "view-readme.npmUrl": { "type": "string", "default": "https://registry.npmjs.org/", "description": "Get data from remote url." } } }, "commands": [ // 命令配置 { "command": "viewReadme.showLocal", // 注冊(cè)的命令 "title": "Readme: Open markdown file" // 命令顯示在面板的標(biāo)題 } ], "keybindings": [ // 快捷鍵配置 { "command": "viewReadme.showLocal", // 要觸發(fā)的命令 "key": "ctrl+shift+l", // windows系統(tǒng)的快捷鍵 "mac": "cmd+shift+l" // mac系統(tǒng)的快捷鍵 } ] }, "scripts": { "postinstall": "node ./node_modules/vscode/bin/install" }, "devDependencies": { "@types/mocha": "^2.2.32", "@types/node": "^6.0.40", "eslint": "^3.6.0", "mocha": "^2.3.3", "typescript": "^2.0.3", "vscode": "^1.0.0" } }
src/extension.js
var vscode = require("vscode"); var Local = require("./Local"); var { INPUT_PROMPT } = require("./config"); function activate (context) { // 注冊(cè)命令 var disposableLocal = vscode.commands.registerCommand("viewReadme.showLocal", function () { vscode.window.showInputBox({ // 調(diào)出輸入框 prompt: INPUT_PROMPT }).then(function (moduleName) { new Local(moduleName); // 回車后執(zhí)行 }); }); context.subscriptions.push(disposableLocal); } function deactivate () {} // exports exports.activate = activate; exports.deactivate = deactivate;
src/Local.js
var fs = require("fs"); var path = require("path"); var vscode = require("vscode"); var { MARKDOWN_PREVIEW, README_NAMES, NO_FILE, NOT_FOUND } = require("./config"); function Local (moduleName) { this.moduleName = moduleName; moduleName && this.init(); } Local.prototype = { init: function () { var files = vscode.workspace.textDocuments; // 獲取當(dāng)前打開的文件路徑 if (files.length) { var last = files.length - 1; this.handlePath(path.dirname(files[last].fileName)); // 取最后打開的文件目錄,基于這個(gè)路徑去查找node_modules目錄 } else { vscode.window.showInformationMessage(NO_FILE); // 彈出提示信息 } }, handlePath: function (dir) { if (dir === "/") { // 已到達(dá)根目錄 vscode.window.showInformationMessage(NOT_FOUND); return; } var modulePath = path.join(dir, "node_modules", this.moduleName); if (fs.existsSync(modulePath)) { this.handleReadme(modulePath); // 找到了模塊目錄 } else { this.handlePath(path.dirname(dir)); // 未找到則繼續(xù)向上查找 } }, handleReadme: function (modulePath) { var readmeName = README_NAMES.find(function (name) { return fs.existsSync(path.join(modulePath, name)); }); if (readmeName) { var readmePath = path.join(modulePath, readmeName); vscode.commands.executeCommand(MARKDOWN_PREVIEW, vscode.Uri.parse("file://" + readmePath)); // 執(zhí)行markdown命令,打開文件 } else { vscode.window.showInformationMessage(NOT_FOUND); } } }; module.exports = Local;
src/config.js
exports.MARKDOWN_PREVIEW = "markdown.showPreview"; exports.README_NAMES = ["README.md", "readme.md", "Readme.md", "README", "readme"]; exports.INPUT_PROMPT = "Enter module name"; exports.NO_FILE = "Please open file firstly."; exports.NOT_FOUND = "Module not found!";
插件編寫完成,重新運(yùn)行一下試試效果吧。
發(fā)布插件賬號(hào)注冊(cè)
Create new account
添加Personal Access Token(地址:https://[your name].visualstudio.com/_details/security/tokens,注意Token只顯示一次,最好自己保存一份)
安裝
npm install -g vsce
創(chuàng)建發(fā)布作者
vsce create-publisher (publisher name)
發(fā)布
vsce publish
打包成二進(jìn)制文件
vsce package結(jié)尾
大家可以在VS Code插件中搜索view-readme來安裝這個(gè)插件。
項(xiàng)目倉(cāng)庫(kù):https://github.com/ansenhuang/vscode-view-readme
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/88216.html
摘要:發(fā)布插件插件開發(fā)完后就可以發(fā)布了,需要安裝安裝完后,需要去注冊(cè)并生成一個(gè)。總結(jié)本文介紹了插件開發(fā)的基本流程,實(shí)現(xiàn)了一個(gè)簡(jiǎn)單的插件。更多的開發(fā)技巧,可以看這個(gè)系列的第二篇插件開發(fā)介紹二 前言 前段時(shí)間做了一個(gè)基于命令行的效率工具,可以自動(dòng)生成組件的模板代碼。自己用起來還覺得挺好,但在組內(nèi)案例幾次后大家都不愿意用,究其原因還是命令行工具使用起來門檻有點(diǎn)高,不方便。由于組內(nèi)已經(jīng)統(tǒng)一使用VS ...
摘要:自發(fā)布以來就備受關(guān)注,也有很多媒體和開發(fā)者稱為下一代。所以在寫這個(gè)插件之前,我又為寫了一個(gè)插件。插件提供了開箱即用的支持,開發(fā)者不需要任何配置,但是有一個(gè)前提是開發(fā)者需要使用內(nèi)置的。 這幾天為 Deno 開發(fā)了一個(gè) VS Code 插件:Deno support for VSCode,GitHub 地址:https://github.com/justjavac/...。 自 Deno ...
摘要:軟件跨平臺(tái)支持以及,運(yùn)行流暢,可謂是微軟的良心之作微軟有這個(gè)宇宙最強(qiáng),自然也不會(huì)弱宇宙最強(qiáng)編輯器說到代碼編輯器,我們有必要提一提還有。 原文鏈接:VS Code上手與超實(shí)用插件安利 工欲善其事必先利其器 Visual Studio Code (簡(jiǎn)稱 VS Code / VSC) 是一款免費(fèi)開源的現(xiàn)代化輕量級(jí)代碼編輯器,支持幾乎所有主流的開發(fā)語(yǔ)言的語(yǔ)法高亮、智能代碼補(bǔ)全、自定義熱鍵、括號(hào)...
摘要:以下簡(jiǎn)稱是微軟開發(fā)同時(shí)支持和系統(tǒng)且開放源代碼的代碼編輯器,并且是開源免費(fèi)使用的,也是當(dāng)下最受歡迎的代碼編輯器之一官網(wǎng)下載地址文章已更新插件折騰記二經(jīng)過我一段時(shí)間的使用,發(fā)現(xiàn)一些插件是必不可少的,現(xiàn)在給大家推薦一些非常實(shí)用的插件下載好安裝打開 Visual Studio Code(以下簡(jiǎn)稱vs code) 是 微軟開發(fā)同時(shí)支持Windows、Linux、和macOS系統(tǒng)且開放源代碼的代碼...
摘要:以下簡(jiǎn)稱是微軟開發(fā)同時(shí)支持和系統(tǒng)且開放源代碼的代碼編輯器,并且是開源免費(fèi)使用的,也是當(dāng)下最受歡迎的代碼編輯器之一官網(wǎng)下載地址文章已更新插件折騰記二經(jīng)過我一段時(shí)間的使用,發(fā)現(xiàn)一些插件是必不可少的,現(xiàn)在給大家推薦一些非常實(shí)用的插件下載好安裝打開 Visual Studio Code(以下簡(jiǎn)稱vs code) 是 微軟開發(fā)同時(shí)支持Windows、Linux、和macOS系統(tǒng)且開放源代碼的代碼...
閱讀 2386·2021-11-24 09:39
閱讀 2593·2021-11-22 15:24
閱讀 3039·2021-09-02 09:48
閱讀 3094·2021-07-26 22:01
閱讀 1495·2019-08-30 11:09
閱讀 1735·2019-08-29 18:47
閱讀 663·2019-08-29 15:40
閱讀 2185·2019-08-29 15:22