当前位置: 首页 > news >正文

本地连接远程阿里云K8S

1.首先安装kubectl

1.1验证自己系统

uname -m

1.2

按照步骤安装

在 Linux 系统中安装并设置 kubectl | Kubernetes

1.3 阿里云配置

通过kubectl连接Kubernetes集群_容器服务 Kubernetes 版 ACK(ACK)-阿里云帮助中心

2.验证

阿里云config直接导出,直接扔到.kube/ 位置也行

mkdir ~/.kube/
cd ~/.kube/
vim config
kubectl get node,pod,svc

3.1 多config配置

//合并配置
KUBECONFIG=$HOME/.kube/config_latest:$HOME/.kube/config_qa kubectl config view --merge --flatten > config
//永久生效
echo 'export KUBECONFIG=$HOME/.kube/config' >> ~/.bashrc                                      
source ~/.bashrc//查看当前配置
kubectl config current-context
kubectl config get-contexts

3.2 合成config事例

apiVersion: v1
clusters:
- cluster:certificate-authority-data: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSURUakNDQWphZ0F3SUJBZ0lVU1dWMW5XdEd0Q0FGcmxU3RUdi9PRUZ3cWtXWHRaZ3NlcEMxNUlURW4234234234l5OGUyTHZtSFBTMjhWa0NQenhkCkVaK0l0SEhQUHp2TU4zTGxZeFZiL0lXWnVtQzhCbFhHSmxRbDJER1J3OEJjWXFGUWpySGx2TXV3NnhOUmVzeVoKY1lCOEY0Q0pjUUczRzdTQTFERkpCdmRIMm1ZTGkyZTIrNEUvc05KZG5hdElqajUwTm5KT3VUWHRGc0JRb1E2ZgozVk45NmFsaWFlM1pmNGM3Wkw4aFh0WXdjUkdmS292TVpnVkoxRytOdnRXajNnPT0KLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQo=server: https://4.1.1.4:6443name: latest
- cluster:certificate-authority-data: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSURUakNDQWphZ0F3SUJBZ0lVQ04yNXQxM0V1WGhxNTdZZ0d0U1l4TTlINDl3d0RRWUpLb1pJaHZjTkFRRUwKQlFBd1BqRW5NQThHQTFVRUNoTUlhR0Z1WjNwb2IzVXdGQVlEVlFRS0V3MWhiR2xpWVdKaElHTnNiM1ZrTVJNdwpFUVlEVlFRREV3cHJkV0psY201bGRHVnpNQ0FYRFRJek1EZ3lOREF5TWpBd01Gb1lEekl3TlRNd09ERTJNREl5Ck1EQXdXakErTVNjd0R3WURWUVFLRXdob1lXNW5lbWh2ZFRBVUJnTlZCQW9URFdGc2FXSm423423hZbUVnWTJ4dmRXUXgKRXpBUkJnTlZCQU1UQ210MVltVnlibVYwWlhNd2dnRczJJdHFCcHVGOSsrdVdIQ0x5MnpkCjZvZmlRUndxYWpVOFNqTkxvZnpSYm13MVA5NXNER1EzTlMvajNWUUVFc25aV0laNnJFQXYvcndUMVpKMVFCM2QKUVkvRW1uREp5djFlc1owYUxMOGcxeU92QnY5TVRJM2lWWjJIUDZKTXZaNFE3Q3VZQWc5RkowMWtRNGg3NkpDegpTZERHcXovcGhMZDVCcFBzRmZZZDduRmM3WDhHL0NNUVlKNWo1N3hOVWJJbkJ3PT0KLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQo=server: https://7.1.31:6443name: qa
contexts:
- context:cluster: qauser: "204665595022800847-c216c8c771a6441f78dd51d0bc8923837"name: 204665595022800847-c216c8c771a6441f78dd51d0bc8923837
- context:cluster: latestuser: "204665595022800847-c6cb2271ee11946efb633f6f0e8ee1dc1"name: 204665595022800847-c6cb2271ee11946efb633f6f0e8ee1dc1
current-context: 204665595022800847-c216c8c771a6441f78dd51d0bc8923837
kind: Config
preferences: {}
users:
- name: "204665595022800847-c6cb2271ee11946efb633f6f0e8ee1dc1"user:client-certificate-data: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUQvekNDQXVlZ0F3SUJBZ0lFQVhBd1ZUQU5CZ2txaGtpRzl3MEJBUXNGQURCcU1Tb3dLQVlEVlFRS0V5RmoKTm1OaU1qSTNNV1ZsTVRFNU5EWmxabUkyTXpObU5tWXdaVGhsWlRGa1RUJBTUNCNEF3RXdZRFZSMGxCQXd3CkNnWUlLd1lCQlFVSEF3SXdEQVlEVlIwVEFRSC9CQUl3QURBZkJnTlZIU01FR0RBV2dCUTJDQmw2ckFmVm1aam8KNzhuSVQ4NDVPeDd2Z2pBOEJnZ3JCZ0VGQlFjQkFRUXdNQzR3TEFZSUt3WUJCUVVITUFHR0lHaDBkSEE2THk5agpaWEowY3k1aFkzTXVZV3hwZVhWdUxtTnZiUzl2WTNOd01EVUdBMVVkSHdRdU1Dd3dLcUFvb0NhR0pHaDBkSEE2Ckx5OWpaWEowY3k1aFkzTXVZV3hwZVhWdUxtTnZiUzl5YjI5MExtTnliREFOQmdrcWhraUc5dzBCQVFzRkFBT0MKQVFFQW5PR2g1eEgrcjcwY2RwOEVIQXFqKzZ5U1d0OXlQR1ZkK0hvU1YwekNZeTlTClpMTnQ2cWlzOHlScHR3Y0lSMW52M2IrTE5oUVlqNnZxRUMrUG51V3d1UUJucXFjQ0F3RUFBYU9CMlRDQjFqQU8KQmdOVkhROEJBZjhFQkFNQ0Fxd3dEd1lEVlIwVEFRSC9CQVV3QXdFQi96QWRCZ05WSFE0RUZnUVVOZ2d342342aZXF3SAoxWm1ZNk8vSnlFL09PVHNlNzRJd0h3WURWUjBqQkJnd0ZvQVVoVnIvM1NQTkpXOVlRVytlYlVVNW0xaDlkZjh3ClBBWUlLd1lCQlFVSEFRRUVNREF1TUN3R0NDc0dBUVVGQnpBQmhpQm9kSFJ3T2k4dlkyVnlkSE11WVdOekxtRnMKYVhsMWJpNWpiMjB2YjJOemNEQTFCZ05WSFI4RUxqQXNNQ3FnS0tBbWhpUm9kSFJ3T2k4dlkyVnlkSE11WVdOegpMbUZzYVhsMWJpNWpiMjB2Y205dmRDNWpjbXd3RFFZSktvWklodmNOQVFFTEJRQURnWUVBT2hrY0x3MmhJUE9KCkNZK1diQkFmT01UUDR6Q3JuT2lJUHA3V1A2SkJINjIrUUxWQnVjckxOMDJZa1l4MFhlQ3pXa3dobVVnbVYxUVoKNGhtT3hNYmlIVmRSY1FQYU9oZEY5UTVPV0oya1M5NzV4SnptMEY4QVhPK2d1bzlJaDFzblRKOTNuVkJQT0FpYgpadDZOSXVobTk3REtpZjNTRkFZWkpMZEQzQkIrZnNZPQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCg==client-key-data: LS0tLS1CRUdJTiBSU0EgUFJJVkFURSBLRVktLS0tLQpNSUlFb2dJQkFBS0NBUUVBdDZkbGE0N0oxK255eWZsN2JJd0M0U3hLZHVLc2RpV3pGT2dYUC95Tmx1ZmRLVndpCkxwaUtLMG5nZkFpVVRsL0crcU53ZzZpT3ppV2hHMklnN3ZyaEFmcFdEcW5pRGtoWnFvcG9XQlpVZlZVNzAveXIKQmtoZ3dQdHduOWNGdFFyemxGTWtIQnIrZldDWEJvTVVsZWytOQ0hET0ZIRmU4Qm54234234PaXVwVG9ZSGFlZGpBcjZueHFhVWxJWGdJUnpTOHFLSQpLTjNXdW9lK1l2cXRIK0VJZ1RvK3NUc1BEcW41N3ZMZG1mRG1xdW4yK2FheTd6MS9nczFXNmhXbVpTdHFxaWRoCmN5VlJBb0dBZVJzaWJGOFprTkNaekhQYVNDL0F4WDllQzh4SVVOZDFzd2RNZm9nTjBDUmRRV1Brb3Q0Uk5DZ20KUE1HOExERUxMenhlSWF4Tnc4aXFuTHVaNEMrSU55bHB6RGx1M0syckQ5MDZPcVU4a0NqTDBJVkdKcEc5QUg0dgpNLzdlalpYU1ZlNGl1bGpXTFMyS1gvMWtGK0xHVkJJRDg5OVFoRTFBdjFUM1ZnNHhoVnc9Ci0tLS0tRU5EIFJTQSBQUklWQVRFIEtFWS0tLS0tCg==
- name: "204665595022800847-c216c8c771a6441f78dd51d0bc8923837"user:client-certificate-data: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUQ5RENDQXR5Z0F3SUJBZ0lFQVB0VHREQU5CZ2txaGtpRzl3MEJBUXNGQURCcU1Tb3dLQVlEVlFRS0V5RmoKTWpFMll6aGpOemN4WVRZME5ERm1OemhrWkRVeFpEQmlZemc1TWpNNE16Y3hFREFPQmd42342342OVkJBc1RCMlJsWm1GMQpiSFF4S2pBb0JnTlZCQU1USVdNeU1UWmpPR00zTnpGaE5qUTBNV1kzT0dSa05URmtNR0pqT0RreU16Z3pOekFlCkZ3MHlNekE1TVRnd09EUTBNREJhRncweU5qQTVNVGN3T0RRNU5UQmFNRDh4RlRBVEJnTlZCQW9UREhONWMzUmwKYlRwMWMyVnljekVKTUFjR0ExVUVDeE1BTVJzd0dRWURWUVFERXhBZG5oeitCbXk3cllteGZ0OGc1MEhYTWMyVW5OWkxlMlBlCjhnZVMvMXFxOW5vU2Y5SVZ3Y280cE41V3hNWTBLdVVnYTFJZFRmVlJBN0VjZFQ2V1d3L1QrZlZmY1phblVQMUMKd2srWFFzZ3cvZWJUem50Y0sxOHNDZVlRTG5yMEUyaVEwU2RONHZkRHZrY3VXOVZycno0ZU56UWluMjVoNjdqegpxWmoyelExa1pDL0NKcExHWXZ0M0JwY1A4VlhqRm96TWkvc3ltUDlSWjI1c1FnNjhjQkZLQlc5VjhnS3NxdjIrClZ6Nkx2WW5vQng4PQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCi0tLS0tQkVHSU4gQ0VSVElGSUNBVEUtLS0tLQpNSUlEb3pDQ0F3eWdBd0lCQWdJRUFPNmdBVEFOQmdrcWhraUc5dzBCQVFzRkFEQmlNUXN3Q1FZRFZRUUdFd0pEClRqRVJNQThHQTFVRUNBd0lXbWhsU21saGJtY3hFVEFQQmdOVkJBY01DRWhoYm1kYWFHOTFNUkF3RGdZRFZRUUsKREFkQmJHbGlZV0poTVF3d0NnWURWUVFMREFOQlExTXhEVEFMQmdOVkJBTU1CSEp2YjNRd0hoY05Nak13T0RJMApNREl4TmpBd1doY05OcKLzJYZmFla1pRUkJNZndqQ2gxclc3K2o1a0NmVmVpMkxVSjVKZUFvU01oSzVTWmFyY1poeitJWmhMejlMN1dQSgpkYnpJd0tQa2kwbk14SG1mbVRoR0FWMWVXTUpzMlFhYTVGckRQYkU3VHZaTUZsTm1GU3FLNU8rNUE5KzlXVkpFCm1aUEJvQjJKOVUxZEVFcnNnVzRNb2d1dTM2VDEvUHM9Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0Kclient-key-data: LS0tLS1CRUdJTiBSU0EgUFJJVkFURSBLRVktLS0tLQpNSUlFb3dJQkFBS0NBUUVBeGFJRVN5bTZ4eTB1dzExU0MwVmNQN2UxUG1pNFJndHhoNnZxUjJ2M0FpMzFxU3g2CmZDTTFhOFg5RWJyN1JsNytsRGZhaWRRcXRpUWhoWnJSSmQ0NXlJdUtPR0dickpFVG9pSkxWOW44Y0puVnBpMkgKYW9xUm9naFNrenFDQ0hvb2JXVXRnaWxRaE44UWNVTXZiRacHZ5TmU4RnlzZTdyd0psZWNxMmVlZEx4cE9qSHlzVnI1OXhjQ2Z1Z1pSCkJ6RFNKWUJleFdQM05oYkFvaU1OTGJFQ2dZQkc5UE1zRnNoNmlNWCtodExVRFFnelFoNzFyMG1PKzE5ZmJyL1gKNHd6Q0kxSVA5S0NncWUvdkZrNWZYZHg4QUNTTFE2amd4VFc0MWlMOVF1ZjNIRlVvRGxhdjh1ZzhtSlRCY2s4RwpOdnpaUW4wMEVRa085U3FoM0FtakQyUmxWMlZ6aEJFUTd5dWhXdlhEMjU4c004S2liUnM3Wm9uUysrNWxzYUkwCkt3QXJxUUtCZ0FycE53WjRNdnlGTWpjenppbGt6QUhVVkxnWTZscmd6elBNM3JDRHQ3LzBOQjhmaWFmNG5MMG8KcUpwMXRhR1dxVTlHaURRNWlRcE9BclRBUHhYYUl1V0xkNjh4L2RuZVB6eWUvOVFtalh5VURxWWdNTFJ6WTJZQgp6ZWNjRjNRcGp3a2hXUkNOa25TanVIc1VMNzdsL21hNk9vWldUdjhGanRveG5jVExvUzlDCi0tLS0tRU5EIFJTQSBQUklWQVRFIEtFWS0tLS0tCg==

相关文章:

本地连接远程阿里云K8S

1.首先安装kubectl 1.1验证自己系统 uname -m 1.2 按照步骤安装 在 Linux 系统中安装并设置 kubectl | Kubernetes 1.3 阿里云配置 通过kubectl连接Kubernetes集群_容器服务 Kubernetes 版 ACK(ACK)-阿里云帮助中心 2.验证 阿里云config直接导出,直接扔到.…...

CasaOS设备使用Docker安装SyncThing文件同步神器并实现远程管理

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…...

k210 图像操作详解(一)(直线检测、边缘检测、色块追踪)

1、直线检测 ##################################################################################################### # file main.py # author 正点原子团队(ALIENTEK) # version V1.0 # date 2024-01-17 # brief image图像特征检测实…...

【Java版数据结构】初识泛型

看到这句话的时候证明:此刻你我都在努力 加油陌生人 br />个人主页:Gu Gu Study专栏:Java版数据结构 喜欢的一句话: 常常会回顾努力的自己,所以要为自己的努力留下足迹 喜欢的话可以点个赞谢谢了。 作者&#xff1…...

DevExpress WinForms自动表单布局,创建高度可定制用户体验(二)

使用DevExpress WinForms的表单布局组件可以创建高度可定制的应用程序用户体验,从自动安排UI控件到按比例调整大小,DevExpress布局和数据布局控件都可以让您消除与基于像素表单设计相关的麻烦。 P.S:DevExpress WinForms拥有180组件和UI库&a…...

vue中v-if和v-for

vue中v-if和v-for Vue 官方建议不要在同一个元素上同时使用 v-if 和 v-for 指令,主要有以下几个原因: 性能问题: 当 v-if 和 v-for 一起使用时,Vue 在每次渲染时都需要先执行循环,然后再对每个元素进行条件判断。这可能…...

【MySQL】根据binlog日志获取回滚sql的一个开发思路

根据binlog日志获取回滚sql的一个开发思路 需要获取的信息 thread_id 打开 mysql 客户端 开始时间 关闭 mysql 客户端 结束时间 binlog 匹配流程 指定 mysql 客户端 开始时间和结束时间 先匹配 thread_id 相同的 然后匹配 ^BEGIN$行和 ^COMMIT/*!*/;$行之间的数据 当匹…...

Kafka快速入门+SpringBoot简单的秒杀案例

1. 主题相关 1.1 创建主题 kafka-topics.sh --create --bootstrap-server [服务器地址] --replication-factor [副本数] --partitions [分区数] --topic [主题名]liberliber-VMware-Virtual-Platform:/home/zookeeper$ docker-compose exec kafka /bin/bash #进入kafka容器 b…...

Redis哨兵机制

哨兵机制: (1)监控:有一个哨兵集群,这个哨兵集群检测redis的主从集群。它是每隔1秒钟就向主从集群中的节点发送心跳,如果节点没有回复,则这个哨兵就主观的认为这个节点发生故障,这时…...

OSPF概述

OSPF OSPF属于内部网关路由协议【IGP】 用于单一自治系统【Autonomous System-AS】内决策路由 自治系统【AS】 执行统一路由策略的一组网络设备的组合 OSPF概述 为了适应大型的网络,OSPF在AS内划分多个区域 每个OSPF路由器只维护所在区域的完整的链路状态信息 …...

CSS学习笔记[Web开发]

CSS学习 本文为学习笔记,参考菜鸟和w3c 文章目录 CSS 简介CSS 插入外部 CSS内部 CSS行内 CSS多个样式表层叠顺序 CSS 语法例子解释 CSS 选择器CSS 元素选择器CSS id 选择器实例CSS 类选择器实例CSS 通用选择器实例CSS 分组选择器CSS 后代选择器CSS 子元素选择器CSS …...

Go基础编程 - 11 - 函数(func)

接口(interface) 函数1. 函数定义1.1. 函数名1.2. 参数列表1.3. 返回值列表 2. 匿名函数3. 闭包、递归3.1 闭包3.1.1 函数、引用环境3.1.2 闭包的延迟绑定3.1.3 goroutine 的延迟绑定 3.2 递归函数 4. 延迟调用(defer)4.1 defer特…...

Typora入门

标题(clrt数字) 段落 实现换行 1.在一个行的结尾加上两个空格实现换行 2.在两行之间加上空行实现换行 实现分割线 (1.***三个星号实现分割线) (2.三个以上的—也可以实现分割线) 强调 斜体:我是斜体 (单下划线…...

PT2262-IR

PT2262是一款很古老的编码芯片,其兼容型号有:SC2262,AD2262,SC2260(需改变匹配电阻)等。 依据其datasheet,PT2262射频模式工作原理: CODE BITS A Code Bit is the basic component of the encoded waveform, and ca…...

JavaScript 迭代器

在JavaScript中,迭代器是一种允许我们遍历集合中元素的对象。迭代器对象具有一个next()方法,该方法返回value和done。value是当前迭代的值,done属性是一个布尔值,表示是否到达了集合的末尾。 迭代器协议 一个迭代器对象必须具备以…...

数据结构之《队列》

在数据结构之《栈》章节中学习了线性表中除了顺序表和链表外的另一种结构——栈,在本篇中我们将继续学习另一种线性表的结构——队列,在通过本篇的学习后,你将会对栈的结构有充足的了解,在了解完结构后我们还将进行栈的实现。一起…...

【NPU 系列专栏 2 -- NVIDIA 的 H100 和 H200 是什么?】

请阅读【嵌入式及芯片开发学必备专栏】 文章目录 NVIDIA H100 和 H200 芯片NVIDIA H100 芯片简介NVIDIA H100 主要特点NVIDIA H100 应用场景NVIDIA H100 使用举例NVIDIA H200 芯片简介NVIDIA H200 主要特点NVIDIA H200 应用场景NVIDIA H200 使用举例Summary NVIDIA H100 和 H20…...

【BUG】已解决:IndexError: positional indexers are out-of-bounds

IndexError: positional indexers are out-of-bounds 目录 IndexError: positional indexers are out-of-bounds 【常见模块错误】 【解决方案】 原因分析 解决方法 示例代码 欢迎来到英杰社区https://bbs.csdn.net/topics/617804998 欢迎来到我的主页,我是博…...

视频汇聚,GB28181,rtsp,rtmp,sip,webrtc,视频点播等多元异构视频融合,视频通话,视频会议交互方案

现在视频汇聚,视频融合和视频互动,是视频技术的应用方向,目前客户一般有很多视频的业务系统,如已有GB28181的监控(GB现在是国内主流,大量开源接入和商用方案),rtsp设备,音…...

SpringCloud断路器的使用与原理解析

Spring Cloud断路器是在分布式系统中实现容错的一种方式。它的原理是通过在调用链路上添加断路器,当某个服务的调用出现故障或超时时,断路器会自动迅速地切换到快速失败模式,防止故障扩散,从而保护整个系统的稳定性。 Spring Cloud断路器的使用与原理解析如下: 一、使用断…...

UE5 学习系列(二)用户操作界面及介绍

这篇博客是 UE5 学习系列博客的第二篇,在第一篇的基础上展开这篇内容。博客参考的 B 站视频资料和第一篇的链接如下: 【Note】:如果你已经完成安装等操作,可以只执行第一篇博客中 2. 新建一个空白游戏项目 章节操作,重…...

Android Wi-Fi 连接失败日志分析

1. Android wifi 关键日志总结 (1) Wi-Fi 断开 (CTRL-EVENT-DISCONNECTED reason3) 日志相关部分: 06-05 10:48:40.987 943 943 I wpa_supplicant: wlan0: CTRL-EVENT-DISCONNECTED bssid44:9b:c1:57:a8:90 reason3 locally_generated1解析: CTR…...

label-studio的使用教程(导入本地路径)

文章目录 1. 准备环境2. 脚本启动2.1 Windows2.2 Linux 3. 安装label-studio机器学习后端3.1 pip安装(推荐)3.2 GitHub仓库安装 4. 后端配置4.1 yolo环境4.2 引入后端模型4.3 修改脚本4.4 启动后端 5. 标注工程5.1 创建工程5.2 配置图片路径5.3 配置工程类型标签5.4 配置模型5.…...

<6>-MySQL表的增删查改

目录 一,create(创建表) 二,retrieve(查询表) 1,select列 2,where条件 三,update(更新表) 四,delete(删除表&#xf…...

Vue3 + Element Plus + TypeScript中el-transfer穿梭框组件使用详解及示例

使用详解 Element Plus 的 el-transfer 组件是一个强大的穿梭框组件,常用于在两个集合之间进行数据转移,如权限分配、数据选择等场景。下面我将详细介绍其用法并提供一个完整示例。 核心特性与用法 基本属性 v-model:绑定右侧列表的值&…...

基于当前项目通过npm包形式暴露公共组件

1.package.sjon文件配置 其中xh-flowable就是暴露出去的npm包名 2.创建tpyes文件夹,并新增内容 3.创建package文件夹...

Spring数据访问模块设计

前面我们已经完成了IoC和web模块的设计,聪明的码友立马就知道了,该到数据访问模块了,要不就这俩玩个6啊,查库势在必行,至此,它来了。 一、核心设计理念 1、痛点在哪 应用离不开数据(数据库、No…...

Python 包管理器 uv 介绍

Python 包管理器 uv 全面介绍 uv 是由 Astral(热门工具 Ruff 的开发者)推出的下一代高性能 Python 包管理器和构建工具,用 Rust 编写。它旨在解决传统工具(如 pip、virtualenv、pip-tools)的性能瓶颈,同时…...

Mysql中select查询语句的执行过程

目录 1、介绍 1.1、组件介绍 1.2、Sql执行顺序 2、执行流程 2.1. 连接与认证 2.2. 查询缓存 2.3. 语法解析(Parser) 2.4、执行sql 1. 预处理(Preprocessor) 2. 查询优化器(Optimizer) 3. 执行器…...

GruntJS-前端自动化任务运行器从入门到实战

Grunt 完全指南:从入门到实战 一、Grunt 是什么? Grunt是一个基于 Node.js 的前端自动化任务运行器,主要用于自动化执行项目开发中重复性高的任务,例如文件压缩、代码编译、语法检查、单元测试、文件合并等。通过配置简洁的任务…...