목차
正文
1、使用官方提供的脚手架初始化一个项目
2、自定义命令、快捷键、菜单
3、如何添加命令列表
4、叫 helloWorld 太土了,下一步我们来修改一下指令的名称

텍스트

" >5、安装babel"]

텍스트

먼저 이 플러그인을 실행해 보겠습니다
6、思考插件如何实现?
7、了解基本处理流程之后,我们就来看下最终的代码实现吧
8、vscode 设置我们的插件只支持 js 文件的限制
9、整合到我们前面创建的项目中去
10、打包发布插件
总结
개발 도구 VSCode vscode+babel은 사용되지 않는 변수를 지능적으로 제거하는 플러그인을 개발합니다(실제 전투)

vscode+babel은 사용되지 않는 변수를 지능적으로 제거하는 플러그인을 개발합니다(실제 전투)

Dec 22, 2021 pm 07:48 PM
babel vscode

이 글은 바벨과 결합된 vscode에서 사용하지 않는 변수 플러그인을 스마트하게 제거하는 방법을 공유합니다. 모두에게 도움이 되기를 바랍니다!

vscode+babel은 사용되지 않는 변수를 지능적으로 제거하는 플러그인을 개발합니다(실제 전투)

vscode는 프런트엔드에 없어서는 안 될 개발 도구 중 하나가 되었습니다. 개발자들이 vscode를 선호하는 이유는 "전능한" 플러그인 시스템과 관련이 있다고 생각합니다. 직장에서는 순수한 도구형 플러그인을 개발하는 데 사용할 수도 있고 회사의 비즈니스와 결합된 일부 기능적인 플러그인을 개발하는 데에도 사용할 수 있습니다. >. 여기에서는 babel을 결합하여 지능적으로 사용하지 않는 변수를 제거할 수 있는 플러그인을 공유합니다. 이 플러그인이 모든 사람이 vscode 플러그인을 개발하는 데 영감을 주고 도움이 되기를 바랍니다. [추천 학습: "vscode 입문 튜토리얼工具型的插件,也可以用它开发一些和公司业务相结合的功能插件。在这里我分享一个通过结合babel来实现一个能够智能移除未使用的变量插件,希望对大家开发 vscode 插件有一定的启发和帮助。【推荐学习:《vscode入门教程》】

正文

今天我们首先来熟悉一下 vscode 插件项目的搭建流程

1、使用官方提供的脚手架初始化一个项目

安装脚手架

# npm 形式
npm install -g yo generator-code
# yarn 形式
yarn global add yo generator-code
로그인 후 복사

运行脚手架

# 运行脚手架
yo code
로그인 후 복사

选择模板,考虑到有些开发者对 TypeScript 并不熟悉,所以我们这里选择 New Extension (JavaScript)

? What type of extension do you want to create? New Extension (JavaScript)
? What's the name of your extension? rm-unuse-var
? What's the identifier of your extension? rm-unuse-var
? What's the description of your extension? 移除未使用的变量
? Enable JavaScript type checking in 'jsconfig.json'? Yes
? Initialize a git repository? Yes
? Which package manager to use? yarn
로그인 후 복사

这是我们最终生成的目录结构

vscode+babel은 사용되지 않는 변수를 지능적으로 제거하는 플러그인을 개발합니다(실제 전투)

我们先来运行一下这个插件试试

vscode+babel은 사용되지 않는 변수를 지능적으로 제거하는 플러그인을 개발합니다(실제 전투)

点击上面运行按钮,会打开一个新的 vscode 窗口,在新窗口中按下Ctrl+Shift+P输入Hello World,在窗口右下角会看到一个提示框,说明我们第一个 vscode 插件运行成功运行了。

vscode+babel은 사용되지 않는 변수를 지능적으로 제거하는 플러그인을 개발합니다(실제 전투)

2、自定义命令、快捷键、菜单

vscode 插件很多功能都是基于一个个命令实现的,我们可以自定义一些命令,这个命令将出现在按下Ctrl+Shift+P后的命令列表里面,同时可以给命令配置快捷键、配置资源管理器菜单、编辑器菜单、标题菜单、下拉菜单、右上角图标等。

3、如何添加命令列表

package.json 部分配置

{
  // 扩展的激活事件
  "activationEvents": ["onCommand:rm-unuse-var.helloWorld"],
  // 入口文件
  "main": "./extension.js",
  // 添加指令
  "contributes": {
    "commands": [
      {
        // 这里的值必须和activationEvents里面配置的一样
        "command": "rm-unuse-var.helloWorld",
        // 这个就是我们指令的名称,可以修改这里的值重新运行插件试试看
        "title": "Hello World"
      }
    ]
  }
}
로그인 후 복사

在开发中快捷键的使用方式是最便捷的,接下来我们修改一下配置,让插件支持快捷键的方式运行。

{
  "contributes": {
    "commands": [
      {
        // 这里的值必须和activationEvents里面配置的一样
        "command": "rm-unuse-var.helloWorld",
        // 这个就是我们指令的名称,可以修改这里的值重新运行插件试试看
        "title": "Hello World"
      }
    ],
    // 快捷键绑定
    "keybindings": [
      {
        "command": "rm-unuse-var.helloWorld",
        "key": "ctrl+6",
        "mac": "cmd+6"
      }
    ]
  }
}
로그인 후 복사

我们再重新运行一下,通过快捷键Ctrl+6看看我们的插件是否能够正常运行。没错就是这么简单,我们的插件已经能够支持快捷键的形式运行了。

4、叫 helloWorld 太土了,下一步我们来修改一下指令的名称

package.json

{
  "activationEvents": ["onCommand:rm-unuse-var.rm-js-var"],
  "main": "./extension.js",
  "contributes": {
    "commands": [
      {
        "command": "rm-unuse-var.rm-js-var",
        "title": "Hello World"
      }
    ],
    "keybindings": [
      {
        "command": "rm-unuse-var.rm-js-var",
        "key": "ctrl+6",
        "mac": "cmd+6"
      }
    ]
  }
}
로그인 후 복사

因为我们在extension.js中注册了指令的名称,所以也要同步修改

let disposable = vscode.commands.registerCommand(
  "rm-unuse-var.rm-js-var",
  function () {
    vscode.window.showInformationMessage("Hello World from rm-unuse-var!");
  }
);
로그인 후 복사

5、安装babel"]

텍스트

오늘은 먼저 vscode 플러그인 프로젝트의 구축 과정을 숙지하겠습니다

1. 공식 스캐폴딩

스캐폴딩 설치

const say = () => {
  console.log("hello");
};
로그인 후 복사
    스캐폴딩 실행
  • function say() {
      console.log("hello");
    }
    로그인 후 복사

    템플릿을 선택하세요. 일부 개발자가 TypeScript에 익숙하지 않다는 점을 고려하여 새 확장(JavaScript)@babel/parser生成 AST 语法树,文档地址(https://www.babeljs.cn/docs/babel-parser)

  • @babel/traverse遍历 AST 语法树,文档地址(https://www.babeljs.cn/docs/babel-traverse)

  • @babel/generator根据 AST 语法树生成代码,文档地址(https://www.babeljs.cn/docs/babel-generator)

  • @babel/types

    const t = require("@babel/types");
    const parser = require("@babel/parser");
    const traverse = require("@babel/traverse").default;
    const generate = require("@babel/generator").default;
    // 1、将代码解析成 AST 语法树
    const ast = parser.parse(`const say = () => {
      console.log("hello");
    };`);
    // 2、遍历修改 AST 语法树
    traverse(ast, {
      VariableDeclaration(path) {
        const { node } = path;
        // 写死找到第一个申明
        const declaration = node.declarations[0];
        // 定义的内容
        const init = declaration.init;
        // 判断是否是箭头函数
        if (t.isArrowFunctionExpression(init)) {
          // 将原来的表达式替换成新生成的函数
          path.replaceWith(
            t.functionDeclaration(
              declaration.id,
              init.params,
              init.body,
              init.generator,
              init.async
            )
          );
        }
      },
    });
    // 3、根据修改过的 AST 语法树生成新的代码
    console.log(generate(ast).code);
    /*
    function say() {
      console.log("hello");
    }
    */
    로그인 후 복사

    을 선택합니다. 최종 생성된 디렉터리 구조입니다
vscode+babel은 사용되지 않는 변수를 지능적으로 제거하는 플러그인을 개발합니다(실제 전투)

먼저 이 플러그인을 실행해 보겠습니다

vscode+babel은 사용되지 않는 변수를 지능적으로 제거하는 플러그인을 개발합니다(실제 전투)

위의 실행 버튼을 클릭하면 새로운 vscode 창이 열립니다. 새 창에서 Ctrl+Shift+P를 누르고 Hello World를 입력하세요. </code >를 클릭하면 창 오른쪽 하단에 첫 번째 vscode 플러그인이 성공적으로 실행되었음을 나타내는 프롬프트 상자가 표시됩니다. <p></p><img src="https://img.php.cn/upload/image/274/863/510/164017326230798vscode+babel은 사용되지 않는 변수를 지능적으로 제거하는 플러그인을 개발합니다(실제 전투)" title="164017326230798vscode+babel은 사용되지 않는 변수를 지능적으로 제거하는 플러그인을 개발합니다(실제 전투)" alt="vscode+babel은 사용되지 않는 변수를 지능적으로 제거하는 플러그인을 개발합니다(실제 전투)"/><p><h3 data-id="heading-3"></p>2. 사용자 정의 명령, 단축키, 메뉴<p><a href="https://astexplorer.net/" target="_blank" textvalue="astexplorer.net/"></a>vscode 플러그인의 많은 기능은 명령을 기반으로 구현됩니다. <code>Ctrl+Shift+P를 클릭한 후 명령 목록에서 명령에 대한 단축키를 구성하고 리소스 관리자 메뉴, 편집기 메뉴, 제목 메뉴, 드롭다운 메뉴, 오른쪽 상단 아이콘 등을 구성할 수도 있습니다.

🎜3. 명령어 목록 추가 방법🎜🎜🎜package.json 부분 구성🎜
import * as vscode from "vscode";
// 当前打开的文件
const { activeTextEditor } = vscode.window;
// 然后通过document下的getText就能轻松获取到我们的代码了
const code = activeTextEditor.document.getText();
로그인 후 복사
로그인 후 복사
🎜개발에서는 단축키를 사용하는 것이 가장 편리한 방법입니다. 구성을 통해 플러그인이 단축키로 실행되도록 지원합니다. 🎜
activeTextEditor.edit((editBuilder) => {
  editBuilder.replace(
    // 因为我们要全文件替换,所以我们需要定义一个从头到位的区间
    new vscode.Range(
      new vscode.Position(0, 0),
      new vscode.Position(activeTextEditor.document.lineCount + 1, 0)
    ),
    // 我们的新代码
    generate(ast).code
  );
});
로그인 후 복사
로그인 후 복사
🎜다시 실행해서 단축키 Ctrl+6을 눌러 플러그인이 정상적으로 실행되는지 확인해 보겠습니다. 예, 매우 간단합니다. 우리 플러그인은 이미 단축키로 실행을 지원할 수 있습니다. 🎜

🎜4. helloWorld를 호출하는 것이 너무 촌스럽습니다. 다음으로 extension.js에 있으므로 명령 이름을 🎜🎜🎜package.json🎜<div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class='brush:php;toolbar:false;'>import vue from &quot;vue&quot;; const a = { test1: 1, test2: 2 }; const { test1, test2 } = a; function b() {} let c = () =&gt; {}; var d = () =&gt; {};</pre><div class="contentsignin">로그인 후 복사</div></div><div class="contentsignin">로그인 후 복사</div></div>🎜으로 변경해 보겠습니다. < 명령어 이름은 /code>에 등록되어 있으므로 동시에 수정해야 합니다🎜<div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class='brush:php;toolbar:false;'>var a = 1; var b = 2; console.log(a);</pre><div class="contentsignin">로그인 후 복사</div></div><div class="contentsignin">로그인 후 복사</div></div><h3 data-id="heading-6">🎜5 <code>babel 관련 라이브러리를 설치하세요🎜🎜 🎜코드를 3단계로 나누어 수정할 수 있습니다🎜🎜1. 코드를 AST 구문 트리로 구문 분석합니다. 2. AST 구문 트리를 탐색하고 수정합니다. 3. 수정된 AST 구문 트리를 기반으로 새 코드를 생성합니다🎜🎜Babel에는 이러한 세 단계를 처리하는 해당 라이브러리가 있습니다🎜🎜🎜🎜@babel/parserAST 구문 트리, 문서 주소 생성( https:// www.babeljs.cn/docs/babel-parser) 🎜🎜🎜🎜@babel/traverseAST 구문 트리 탐색, 문서 주소(https://www.babeljs.cn/docs /babel- traverse)🎜🎜🎜🎜@babel/generatorAST 구문 트리, 문서 주소(https://www.babeljs.cn/docs/babel-generator)를 기반으로 코드 생성🎜🎜🎜🎜 @babel/types 도구 라이브러리, 문서 주소 (https://www.babeljs.cn/docs/babel-types) 🎜🎜🎜🎜🎜6 이 라이브러리의 기본 사용법을 살펴보겠습니다. 예를 들어 es6 화살표 함수를 일반 함수로 변환하는 코드 구현을 구현해 보세요🎜🎜🎜변환 전🎜
var a = 1;
console.log(a);
로그인 후 복사
로그인 후 복사
🎜변환 후🎜
const t = require("@babel/types");
const parser = require("@babel/parser");
const traverse = require("@babel/traverse").default;
const generate = require("@babel/generator").default;

const ast = parser.parse(`var a = 1;
var b = 2;
console.log(a);`);

traverse(ast, {
  VariableDeclaration(path) {
    const { node } = path;
    const { declarations } = node;
    // 此处便利可以处理 const a = 1,b = 2; 这种场景
    node.declarations = declarations.filter((declaration) => {
      const { id } = declaration;
      // const { b, c } = a;
      if (t.isObjectPattern(id)) {
        // path.scope.getBinding(name).referenced 判断变量是否被引用
        // 通过filter移除掉没有使用的变量
        id.properties = id.properties.filter((property) => {
          const binding = path.scope.getBinding(property.key.name);
          return !!binding?.referenced;
        });
        // 如果对象中所有变量都没有被应用,则该对象整个移除
        return id.properties.length > 0;
      } else {
        // const a = 1;
        const binding = path.scope.getBinding(id.name);
        return !!binding?.referenced;
      }
    });
    // 如果整个定义语句都没有被引用则整个移除
    if (node.declarations.length === 0) {
      path.remove();
    }
  },
});
console.log(generate(ast).code);
로그인 후 복사
로그인 후 복사
🎜코드 부분은 학습 참고용으로 하드 코딩되어 있습니다🎜
const t = require("@babel/types");
const parser = require("@babel/parser");
const traverse = require("@babel/traverse").default;
const generate = require("@babel/generator").default;

const ast = parser.parse(
  `import vue from &#39;vue&#39;;
  var a = 1;
var b = 2;
var { test1, test2 } = { test1: 1, test2: 2 };
function c(){}
function d(){}
d();
console.log(a, test1);`,
  {
    sourceType: "module",
  }
);

traverse(ast, {
  // 处理 const var let
  VariableDeclaration(path) {
    const { node } = path;
    const { declarations } = node;

    node.declarations = declarations.filter((declaration) => {
      const { id } = declaration;
      if (t.isObjectPattern(id)) {
        id.properties = id.properties.filter((property) => {
          const binding = path.scope.getBinding(property.key.name);
          return !!binding?.referenced;
        });
        return id.properties.length > 0;
      } else {
        const binding = path.scope.getBinding(id.name);
        return !!binding?.referenced;
      }
    });

    if (node.declarations.length === 0) {
      path.remove();
    }
  },
  // 处理 import
  ImportDeclaration(path) {
    const { node } = path;
    const { specifiers } = node;
    if (!specifiers.length) {
      return;
    }
    node.specifiers = specifiers.filter((specifier) => {
      const { local } = specifier;
      const binding = path.scope.getBinding(local.name);
      return !!binding?.referenced;
    });
    if (node.specifiers.length === 0) {
      path.remove();
    }
  },
  // 处理 function
  FunctionDeclaration(path) {
    const { node } = path;
    const { id } = node;
    const binding = path.scope.getBinding(id.name);
    if (!binding?.referenced) {
      path.remove();
    }
  },
});
console.log(generate(ast).code);
로그인 후 복사
로그인 후 복사
🎜많은 학생들이 궁금해할 것 같아요 이제 표현식은 상대적으로 간단해졌습니다. 다행히도 복잡하다면 중첩 정의가 매우 깊고 복잡해집니다. 이때 어떤 노드를 교체해야 하는지 어떻게 알 수 있을까요? . 실제로 🎜astexplorer.net/🎜을 이용할 수 있습니다. 이것은 AST를 온라인으로 변환하는 웹사이트입니다. 두 개의 창을 열고 첫 번째 창에 변환하기 전의 코드를 넣고 두 번째 창에 변환해야 하는 인터페이스를 넣을 수 있습니다. 이때 변환 전과 후의 차이점을 비교하여 코드를 구현할 수 있습니다. 🎜

vscode+babel은 사용되지 않는 변수를 지능적으로 제거하는 플러그인을 개발합니다(실제 전투)

vscode+babel은 사용되지 않는 변수를 지능적으로 제거하는 플러그인을 개발합니다(실제 전투)

6、思考插件如何实现?

1、获取编辑器当前打开的 js 文件的代码 2、将代码解析成 AST 语法树 3、遍历 AST 语法树,删除未使用的定义 4、根据修改过的 AST 语法树生成新的代码 5、替换当前 js 文件的代码

其中 2、4 我们已经会了,接下来只需要看下 1、3、5 如何实现就行

1 和 5 我们可以通过 vscode 提供的方法

1、获取编辑器当前打开的 js 文件的代码

import * as vscode from "vscode";
// 当前打开的文件
const { activeTextEditor } = vscode.window;
// 然后通过document下的getText就能轻松获取到我们的代码了
const code = activeTextEditor.document.getText();
로그인 후 복사
로그인 후 복사

5、替换当前 js 文件的代码

activeTextEditor.edit((editBuilder) => {
  editBuilder.replace(
    // 因为我们要全文件替换,所以我们需要定义一个从头到位的区间
    new vscode.Range(
      new vscode.Position(0, 0),
      new vscode.Position(activeTextEditor.document.lineCount + 1, 0)
    ),
    // 我们的新代码
    generate(ast).code
  );
});
로그인 후 복사
로그인 후 복사

好了接下来我们就剩核心的第 3 步了。

3、遍历 AST 语法树,删除未使用的定义

我们先来分析一下,未使用的定义包含了哪些?

import vue from "vue";
const a = { test1: 1, test2: 2 };
const { test1, test2 } = a;
function b() {}
let c = () => {};
var d = () => {};
로그인 후 복사
로그인 후 복사

然后在线 ast 转换网站,复制这些内容进去看看生成的语法树结构

vscode+babel은 사용되지 않는 변수를 지능적으로 제거하는 플러그인을 개발합니다(실제 전투)

我们先来实现一个例子吧,比如把下面代码中没有用的变量移除掉

转换前

var a = 1;
var b = 2;
console.log(a);
로그인 후 복사
로그인 후 복사

转换后

var a = 1;
console.log(a);
로그인 후 복사
로그인 후 복사
  • scope.getBinding(name) 获取当前所有绑定
  • scope.getBinding(name).referenced 绑定是否被引用
  • scope.getBinding(name).constantViolations 获取当前所有绑定修改
  • scope.getBinding(name).referencePaths 获取当前所有绑定路径

代码实现

const t = require("@babel/types");
const parser = require("@babel/parser");
const traverse = require("@babel/traverse").default;
const generate = require("@babel/generator").default;

const ast = parser.parse(`var a = 1;
var b = 2;
console.log(a);`);

traverse(ast, {
  VariableDeclaration(path) {
    const { node } = path;
    const { declarations } = node;
    // 此处便利可以处理 const a = 1,b = 2; 这种场景
    node.declarations = declarations.filter((declaration) => {
      const { id } = declaration;
      // const { b, c } = a;
      if (t.isObjectPattern(id)) {
        // path.scope.getBinding(name).referenced 判断变量是否被引用
        // 通过filter移除掉没有使用的变量
        id.properties = id.properties.filter((property) => {
          const binding = path.scope.getBinding(property.key.name);
          return !!binding?.referenced;
        });
        // 如果对象中所有变量都没有被应用,则该对象整个移除
        return id.properties.length > 0;
      } else {
        // const a = 1;
        const binding = path.scope.getBinding(id.name);
        return !!binding?.referenced;
      }
    });
    // 如果整个定义语句都没有被引用则整个移除
    if (node.declarations.length === 0) {
      path.remove();
    }
  },
});
console.log(generate(ast).code);
로그인 후 복사
로그인 후 복사

7、了解基本处理流程之后,我们就来看下最终的代码实现吧

const t = require("@babel/types");
const parser = require("@babel/parser");
const traverse = require("@babel/traverse").default;
const generate = require("@babel/generator").default;

const ast = parser.parse(
  `import vue from &#39;vue&#39;;
  var a = 1;
var b = 2;
var { test1, test2 } = { test1: 1, test2: 2 };
function c(){}
function d(){}
d();
console.log(a, test1);`,
  {
    sourceType: "module",
  }
);

traverse(ast, {
  // 处理 const var let
  VariableDeclaration(path) {
    const { node } = path;
    const { declarations } = node;

    node.declarations = declarations.filter((declaration) => {
      const { id } = declaration;
      if (t.isObjectPattern(id)) {
        id.properties = id.properties.filter((property) => {
          const binding = path.scope.getBinding(property.key.name);
          return !!binding?.referenced;
        });
        return id.properties.length > 0;
      } else {
        const binding = path.scope.getBinding(id.name);
        return !!binding?.referenced;
      }
    });

    if (node.declarations.length === 0) {
      path.remove();
    }
  },
  // 处理 import
  ImportDeclaration(path) {
    const { node } = path;
    const { specifiers } = node;
    if (!specifiers.length) {
      return;
    }
    node.specifiers = specifiers.filter((specifier) => {
      const { local } = specifier;
      const binding = path.scope.getBinding(local.name);
      return !!binding?.referenced;
    });
    if (node.specifiers.length === 0) {
      path.remove();
    }
  },
  // 处理 function
  FunctionDeclaration(path) {
    const { node } = path;
    const { id } = node;
    const binding = path.scope.getBinding(id.name);
    if (!binding?.referenced) {
      path.remove();
    }
  },
});
console.log(generate(ast).code);
로그인 후 복사
로그인 후 복사

8、vscode 设置我们的插件只支持 js 文件的限制

因为我们现在实现是针对 js 文件的,所以打开其他类型的文件我们可以让我们的快捷键失效。 我们可以修改package.jsonpackage.json

{
  "contributes": {
    "commands": [
      {
        "command": "rm-unuse-var.remove",
        "title": "Hello World"
      }
    ],
    "keybindings": [
      {
        "command": "rm-unuse-var.remove",
        "key": "ctrl+6",
        "mac": "cmd+6",
        "when": "resourceLangId == javascript"
      }
    ]
  }
}
로그인 후 복사

9、整合到我们前面创建的项目中去

此处省略... 相信看了上面这些介绍大家已经完全有能力自己整合了

10、打包发布插件

打包我们可以vsce工具

全局安装 vsce

# npm
npm i vsce -g
# yarn
yarn global add vsce
로그인 후 복사

打包插件

打包前先修改 README.md 文件否则会报错

vsce package
로그인 후 복사

执行完毕之后会生成一个.vsix 文件

如果要在本地 vscode 使用可以直接导入

vscode+babel은 사용되지 않는 변수를 지능적으로 제거하는 플러그인을 개발합니다(실제 전투)

如果要发布到市场的话,我们需要先注册账号 https://code.visualstudio.com/api/working-with-extensions/publishing-extension#publishing-extensions

# 登录账号
vsce login your-publisher-name
# 发布
vsce publish
로그인 후 복사

发布成功之后就能在我们的市场上看到了 marketplace.visualstudio.com/items?itemN… 也可以在 vscode 中搜索打我们的插件

vscode+babel은 사용되지 않는 변수를 지능적으로 제거하는 플러그인을 개발합니다(실제 전투)

总结

到此为止,相信大家对 vscode 插件开发的基本流程已经有了了解。

觉得文章对你有所帮助,可以点个赞 

当然 vscode 插件还有非常多的配置没有介绍,后面如果有时间可以单独整理成一篇文章来介绍

如果在开发过程中有问题或者其他前端技术问题也可以加我微信rjjs1221交流,或者直接在评论区回复。

源码地址 https://github.com/taoxhsmile/rm-unuse-var

更多关于VSCode的相关知识,请访问:vscode教程!!

위 내용은 vscode+babel은 사용되지 않는 변수를 지능적으로 제거하는 플러그인을 개발합니다(실제 전투)의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

Video Face Swap

Video Face Swap

완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

VSCODE 용 헤더 파일을 정의하는 방법 VSCODE 용 헤더 파일을 정의하는 방법 Apr 15, 2025 pm 09:09 PM

Visual Studio 코드를 사용하여 헤더 파일을 정의하는 방법은 무엇입니까? .h 또는 .hpp 접미사 이름 (예 : 클래스, 함수, 변수)을 사용하여 헤더 파일을 만들고 기호를 선언합니다. 소스 파일에 헤더 파일을 포함시키기 위해 #include 지시문을 사용하여 프로그램을 컴파일합니다. 헤더 파일이 포함되어 있고 선언 된 기호를 사용할 수 있습니다.

VSCODE에 필요한 컴퓨터 구성 VSCODE에 필요한 컴퓨터 구성 Apr 15, 2025 pm 09:48 PM

대 코드 시스템 요구 사항 : 운영 체제 : Windows 10 이상, MacOS 10.12 이상, Linux 배포 프로세서 : 최소 1.6GHz, 권장 2.0GHz 이상의 메모리 : 최소 512MB, 권장 4GB 이상의 저장 공간 : 최소 250MB, 권장 1GB 및 기타 요구 사항 : 안정 네트워크 연결, Xorg/Wayland (LINUX)

vscode 중국 주석의 문제를 해결하는 방법 물음표가되는 방법 vscode 중국 주석의 문제를 해결하는 방법 물음표가되는 방법 Apr 15, 2025 pm 11:36 PM

Visual Studio Code에서 중국어 의견이 물음표가되는 문제를 해결하는 방법 : 파일 인코딩을 확인하고 "BOM이없는 UTF-8"인지 확인하십시오. 글꼴을 "노래 스타일"또는 "Microsoft Yahei"와 같은 한자를 지원하는 글꼴로 변경하십시오. 글꼴을 다시 설치하십시오. 유니 코드 지원을 활성화합니다. vscode를 업그레이드하고 컴퓨터를 다시 시작하고 소스 파일을 재현하십시오.

vscode를 사용하는 방법 vscode를 사용하는 방법 Apr 15, 2025 pm 11:21 PM

Visual Studio Code (VSCODE)는 Microsoft가 개발 한 크로스 플랫폼, 오픈 소스 및 무료 코드 편집기입니다. 광범위한 프로그래밍 언어에 대한 가볍고 확장 성 및 지원으로 유명합니다. VSCODE를 설치하려면 공식 웹 사이트를 방문하여 설치 프로그램을 다운로드하고 실행하십시오. VScode를 사용하는 경우 새 프로젝트를 만들고 코드 편집, 디버그 코드, 프로젝트 탐색, VSCODE 확장 및 설정을 관리 할 수 ​​있습니다. VSCODE는 Windows, MacOS 및 Linux에서 사용할 수 있으며 여러 프로그래밍 언어를 지원하며 Marketplace를 통해 다양한 확장을 제공합니다. 이점은 경량, 확장 성, 광범위한 언어 지원, 풍부한 기능 및 버전이 포함됩니다.

VSCODE 터미널의 공통 명령 VSCODE 터미널의 공통 명령 Apr 15, 2025 pm 10:06 PM

VS 코드 터미널에 대한 공통 명령은 다음과 같습니다. 터미널 화면 (Clear) 지우기 (CLEAR), 현재 디렉토리 파일 (LS)을 나열하고 현재 작업 디렉토리 (CD) 변경, 현재 작업 디렉토리 경로 (MKDIR) 작성, 빈 디렉토리 (RMDIR) 삭제, 새 파일 (터치), 파일 삭제 또는 디렉토리 또는 디렉토리 (CP) (MV) 파일 콘텐츠 표시 (CAT) 파일 콘텐츠보기 및 스크롤 (적음) 파일 컨텐츠보기 아래로 스크롤 (more) 파일의 처음 몇 줄 (헤드)을 표시합니다.

VSCODE 터미널 사용 튜토리얼 VSCODE 터미널 사용 튜토리얼 Apr 15, 2025 pm 10:09 PM

VSCODE 내장 터미널은 편집기 내에서 명령 및 스크립트를 실행하여 개발 프로세스를 단순화 할 수있는 개발 도구입니다. VSCODE 터미널 사용 방법 : 바로 가기 키 (CTRL/CMD)로 터미널을 엽니 다. 명령을 입력하거나 스크립트를 실행하십시오. 핫키 (예 : ctrl l)를 사용하여 터미널을 지우십시오). 작업 디렉토리 (예 : CD 명령)를 변경하십시오. 고급 기능에는 디버그 모드, 자동 코드 스 니펫 완료 및 대화식 명령 기록이 포함됩니다.

VSCODE로 중국 모드를 전환하는 방법 VSCODE로 중국 모드를 전환하는 방법 Apr 15, 2025 pm 11:39 PM

vs Code to Chinese 모드 : 설정 인터페이스를 엽니

vScode 이전 다음 바로 가기 키 vScode 이전 다음 바로 가기 키 Apr 15, 2025 pm 10:51 PM

vs 코드 1 단계/다음 단계 바로 가기 키 사용 : 1 단계 (뒤로) : Windows/Linux : Ctrl ←; MACOS : CMD ← 다음 단계 (앞으로) : Windows/Linux : Ctrl →; MACOS : CMD →

See all articles