Compare commits
4 Commits
28072339c6
...
main
Author | SHA1 | Date | |
---|---|---|---|
c72a7fc72e | |||
bd25138da0 | |||
091e619255 | |||
a581cd7c51 |
89
.drone copy.yml
Normal file
89
.drone copy.yml
Normal file
@ -0,0 +1,89 @@
|
||||
kind: pipeline # 定义一个管道
|
||||
type: docker # 当前管道的类型
|
||||
name: test # 当前管道的名称
|
||||
|
||||
steps:
|
||||
|
||||
# 第一步:构建项目
|
||||
- name: 构建项目
|
||||
image: node:18-alpine
|
||||
commands:
|
||||
- rm -rf node_modules
|
||||
- npm ci
|
||||
- npm run build
|
||||
|
||||
# 第二步:上传静态资源到腾讯云COS (使用另一个插件)
|
||||
- name: 静态资源上传到cos
|
||||
image: ccr.ccs.tencentyun.com/xiaoqidun/gocos
|
||||
settings:
|
||||
secret_id:
|
||||
from_secret: cos_secret_id
|
||||
secret_key:
|
||||
from_secret: cos_secret_key
|
||||
bucket_url: https://files-1302416092.cos.ap-shanghai.myqcloud.com
|
||||
source: dist
|
||||
target: /utils
|
||||
strip_prefix: dist
|
||||
|
||||
# 第三步:部署到服务器
|
||||
- name: 清除服务器缓存
|
||||
image: appleboy/drone-ssh
|
||||
settings:
|
||||
host:
|
||||
from_secret: server_host
|
||||
username:
|
||||
from_secret: server_username
|
||||
password:
|
||||
from_secret: server_password
|
||||
# 或者使用SSH密钥
|
||||
# key:
|
||||
# from_secret: server_ssh_key
|
||||
port: 22
|
||||
script:
|
||||
- rm -rf /www/wwwroot/utils.zguiy.com/*
|
||||
- mkdir -p /www/wwwroot/utils.zguiy.com/
|
||||
- chmod 755 /www/wwwroot/utils.zguiy.com/
|
||||
when:
|
||||
branch:
|
||||
- main
|
||||
- master
|
||||
- dev
|
||||
|
||||
# 第四步:上传构建文件
|
||||
- name: 上传构建文件
|
||||
image: appleboy/drone-scp
|
||||
settings:
|
||||
host:
|
||||
from_secret: server_host
|
||||
username:
|
||||
from_secret: server_username
|
||||
password:
|
||||
from_secret: server_password
|
||||
# 或者使用SSH密钥
|
||||
# key:
|
||||
# from_secret: server_ssh_key
|
||||
port: 22
|
||||
source: dist/*
|
||||
target: /www/wwwroot/utils.zguiy.com/
|
||||
strip_components: 1
|
||||
when:
|
||||
branch:
|
||||
- main
|
||||
- master
|
||||
- dev
|
||||
|
||||
# 定义数据卷用于缓存node_modules
|
||||
volumes:
|
||||
- name: node_modules_cache
|
||||
host:
|
||||
path: /tmp/drone_cache/node_modules
|
||||
|
||||
# 触发条件
|
||||
trigger:
|
||||
branch:
|
||||
- main
|
||||
- master
|
||||
- dev
|
||||
event:
|
||||
- push
|
||||
- pull_request
|
11
.drone.yml
11
.drone.yml
@ -8,11 +8,9 @@ steps:
|
||||
- name: 构建项目
|
||||
image: node:18-alpine
|
||||
commands:
|
||||
- npm install
|
||||
- rm -rf node_modules
|
||||
- npm ci
|
||||
- npm run build
|
||||
volumes:
|
||||
- name: node_modules_cache
|
||||
path: /drone/src/node_modules
|
||||
|
||||
# 第二步:上传静态资源到腾讯云COS (使用另一个插件)
|
||||
- name: 静态资源上传到cos
|
||||
@ -74,11 +72,6 @@ steps:
|
||||
- master
|
||||
- dev
|
||||
|
||||
# 定义数据卷用于缓存node_modules
|
||||
volumes:
|
||||
- name: node_modules_cache
|
||||
host:
|
||||
path: /tmp/drone_cache/node_modules
|
||||
|
||||
# 触发条件
|
||||
trigger:
|
||||
|
@ -3,7 +3,7 @@ import { ref, watch } from 'vue'
|
||||
type Theme = 'light' | 'dark'
|
||||
|
||||
// 全局主题状态
|
||||
const currentTheme = ref<Theme>('dark')
|
||||
const currentTheme = ref<Theme>('light')
|
||||
|
||||
export const useTheme = () => {
|
||||
// 切换主题
|
||||
|
@ -125,6 +125,36 @@ export default {
|
||||
}
|
||||
}
|
||||
},
|
||||
ip_lookup: {
|
||||
title: 'IP Lookup',
|
||||
description: 'IP address geolocation query and type analysis tool',
|
||||
ip_address: 'IP Address',
|
||||
lookup: 'Lookup',
|
||||
query: 'Query',
|
||||
get_my_ip: 'Get My IP',
|
||||
clear: 'Clear',
|
||||
ip_input: 'IP Input',
|
||||
placeholder: 'Please enter IP address...',
|
||||
common_ips: 'Common IPs',
|
||||
querying: 'Querying...',
|
||||
ip_info: 'IP Information',
|
||||
location: 'Location',
|
||||
isp: 'ISP',
|
||||
organization: 'Organization',
|
||||
country: 'Country',
|
||||
region: 'Region',
|
||||
city: 'City',
|
||||
timezone: 'Timezone',
|
||||
coordinates: 'Coordinates',
|
||||
ip_type: 'IP Type',
|
||||
public_ip: 'Public IP',
|
||||
private_ip: 'Private IP',
|
||||
current_ip: 'Current IP',
|
||||
ip_analysis: 'IP Analysis',
|
||||
format: 'Format',
|
||||
access_type: 'Access Type',
|
||||
class: 'IP Class'
|
||||
},
|
||||
seal_generator: {
|
||||
title: 'Seal Generator',
|
||||
description: 'Electronic seal creation tool, supports company and personal seals',
|
||||
@ -164,6 +194,157 @@ export default {
|
||||
personal_seal_features: 'Personal Seal Features',
|
||||
important_notice: 'Important Notice',
|
||||
legal_notice: 'The seals generated by this tool are for learning and testing purposes only. Do not use for illegal purposes. Official company seals need to be registered with relevant authorities.'
|
||||
},
|
||||
text_counter: {
|
||||
title: 'Text Counter',
|
||||
description: 'Word count, character count, line count and other text analysis tools',
|
||||
clear: 'Clear',
|
||||
paste: 'Paste',
|
||||
sample: 'Sample',
|
||||
text_input: 'Text Input',
|
||||
placeholder: 'Please enter or paste text to analyze...',
|
||||
basic_stats: 'Basic Statistics',
|
||||
characters: 'Characters',
|
||||
characters_no_spaces: 'Characters (No Spaces)',
|
||||
words: 'Words',
|
||||
lines: 'Lines',
|
||||
paragraphs: 'Paragraphs',
|
||||
sentences: 'Sentences',
|
||||
character_types: 'Character Types',
|
||||
letters: 'Letters',
|
||||
numbers: 'Numbers',
|
||||
spaces: 'Spaces',
|
||||
punctuation: 'Punctuation',
|
||||
reading_time: 'Reading Time',
|
||||
slow_reading: 'Slow Reading',
|
||||
normal_reading: 'Normal Reading',
|
||||
fast_reading: 'Fast Reading',
|
||||
top_words: 'Top Words',
|
||||
character_count: 'Character Count',
|
||||
word_count: 'Word Count',
|
||||
line_count: 'Line Count',
|
||||
paragraph_count: 'Paragraph Count',
|
||||
sentence_count: 'Sentence Count',
|
||||
reading_speed: 'Reading Speed',
|
||||
fast: 'Fast',
|
||||
normal: 'Normal',
|
||||
slow: 'Slow',
|
||||
most_used_words: 'Most Used Words'
|
||||
},
|
||||
image_compressor: {
|
||||
title: 'Image Compressor',
|
||||
description: 'Image compression and quality adjustment tool',
|
||||
compress: 'Compress',
|
||||
download: 'Download',
|
||||
reset: 'Reset',
|
||||
upload_image: 'Upload Image',
|
||||
click_or_drag: 'Click or drag to upload image',
|
||||
compression_settings: 'Compression Settings',
|
||||
quality: 'Quality',
|
||||
max_width: 'Max Width',
|
||||
max_height: 'Max Height',
|
||||
keep_aspect_ratio: 'Keep Aspect Ratio',
|
||||
output_format: 'Output Format',
|
||||
original_info: 'Original Info',
|
||||
size: 'File Size',
|
||||
dimensions: 'Dimensions',
|
||||
format: 'Format',
|
||||
original_preview: 'Original Preview',
|
||||
compressed_preview: 'Compressed Preview',
|
||||
compressed_size: 'Compressed Size',
|
||||
compression_ratio: 'Compression Ratio',
|
||||
size_reduction: 'Size Reduction',
|
||||
compressing: 'Compressing...',
|
||||
width: 'Width',
|
||||
height: 'Height',
|
||||
original_size: 'Original Size',
|
||||
maintain_aspect_ratio: 'Maintain Aspect Ratio',
|
||||
download_result: 'Download Result'
|
||||
},
|
||||
qrcode_generator: {
|
||||
title: 'QR Code Generator',
|
||||
description: 'Text to QR code generation tool with customizable styles',
|
||||
generate: 'Generate',
|
||||
download: 'Download',
|
||||
clear: 'Clear',
|
||||
text_input: 'Text Input',
|
||||
placeholder: 'Please enter content to generate QR code...',
|
||||
settings: 'Settings',
|
||||
size: 'Size',
|
||||
qr_size: 'QR Code Size',
|
||||
error_level: 'Error Level',
|
||||
foreground_color: 'Foreground Color',
|
||||
background_color: 'Background Color',
|
||||
preview: 'Preview',
|
||||
qr_code: 'QR Code',
|
||||
generating: 'Generating...',
|
||||
no_preview: 'Please enter content and generate QR code',
|
||||
download_qr: 'Download QR Code',
|
||||
qr_preview: 'QR Code Preview'
|
||||
},
|
||||
code_formatter: {
|
||||
title: 'Code Formatter',
|
||||
description: 'Code beautification, formatting and minification tool',
|
||||
format: 'Format',
|
||||
minify: 'Minify',
|
||||
copy: 'Copy',
|
||||
clear: 'Clear',
|
||||
language: 'Language',
|
||||
indent_size: 'Indent Size',
|
||||
line_width: 'Line Width',
|
||||
input: 'Input',
|
||||
output: 'Output',
|
||||
output_placeholder: 'Formatted result will be displayed here...',
|
||||
copy_result: 'Copy Result',
|
||||
clear_all: 'Clear All',
|
||||
input_placeholder: 'Please enter code...',
|
||||
line_count: 'Line Count',
|
||||
char_count: 'Character Count'
|
||||
},
|
||||
base64_to_image: {
|
||||
title: 'Base64 to Image',
|
||||
description: 'Base64 and image bidirectional conversion tool',
|
||||
base64_to_image: 'Base64 to Image',
|
||||
download_image: 'Download Image',
|
||||
clear: 'Clear',
|
||||
base64_input: 'Base64 Input',
|
||||
base64_placeholder: 'Please enter Base64 encoding...',
|
||||
image_to_base64: 'Image to Base64',
|
||||
click_or_drag: 'Click or drag to upload image',
|
||||
image_preview: 'Image Preview',
|
||||
preview_image: 'Preview Image',
|
||||
converting: 'Converting...',
|
||||
no_preview: 'Please enter Base64 or upload image',
|
||||
base64_output: 'Base64 Output',
|
||||
upload_image: 'Upload Image',
|
||||
image_info: 'Image Info',
|
||||
copy_base64: 'Copy Base64'
|
||||
},
|
||||
yml_properties_converter: {
|
||||
title: 'YML/Properties Converter',
|
||||
description: 'YML and Properties configuration file format converter',
|
||||
yml_to_properties: 'YML to Properties',
|
||||
properties_to_yml: 'Properties to YML',
|
||||
yml_to_json: 'YML to JSON',
|
||||
json_to_yml: 'JSON to YML',
|
||||
clear: 'Clear',
|
||||
input: 'Input',
|
||||
output: 'Output',
|
||||
paste: 'Paste',
|
||||
copy: 'Copy',
|
||||
input_format: 'Input Format',
|
||||
output_format: 'Output Format',
|
||||
input_placeholder_yml: 'Enter YAML content...',
|
||||
input_placeholder_properties: 'Enter Properties content...',
|
||||
input_placeholder_json: 'Enter JSON content...',
|
||||
output_placeholder: 'Conversion result will be displayed here...',
|
||||
use_example: 'Use This Example',
|
||||
format_description: 'Format Description',
|
||||
yml_example: 'YAML Example',
|
||||
properties_example: 'Properties Example',
|
||||
json_example: 'JSON Example',
|
||||
convert: 'Convert',
|
||||
conversion_result: 'Conversion Result'
|
||||
}
|
||||
}
|
||||
}
|
@ -264,14 +264,19 @@ export default {
|
||||
code_formatter: {
|
||||
title: '代码格式化',
|
||||
description: '代码美化、格式化、压缩工具',
|
||||
language: '语言',
|
||||
format: '格式化',
|
||||
minify: '压缩',
|
||||
copy: '复制',
|
||||
clear: '清除',
|
||||
language: '语言',
|
||||
indent_size: '缩进大小',
|
||||
line_width: '行宽',
|
||||
input: '输入',
|
||||
output: '输出',
|
||||
output_placeholder: '格式化结果将显示在这里...',
|
||||
copy_result: '复制结果',
|
||||
clear_all: '清除全部',
|
||||
input_placeholder: '请输入代码...',
|
||||
output_placeholder: '格式化结果将显示在这里...',
|
||||
indent_size: '缩进大小',
|
||||
line_count: '行数',
|
||||
char_count: '字符数'
|
||||
},
|
||||
@ -342,16 +347,30 @@ export default {
|
||||
description: 'IP地址归属地查询、类型分析工具',
|
||||
ip_address: 'IP地址',
|
||||
lookup: '查询',
|
||||
query: '查询',
|
||||
get_my_ip: '获取我的IP',
|
||||
clear: '清除',
|
||||
ip_input: 'IP输入',
|
||||
placeholder: '请输入IP地址...',
|
||||
common_ips: '常用IP',
|
||||
querying: '查询中...',
|
||||
ip_info: 'IP信息',
|
||||
location: '位置信息',
|
||||
isp: '运营商',
|
||||
organization: '组织',
|
||||
country: '国家',
|
||||
region: '省份',
|
||||
city: '城市',
|
||||
timezone: '时区',
|
||||
coordinates: '坐标',
|
||||
ip_type: 'IP类型',
|
||||
public_ip: '公网IP',
|
||||
private_ip: '私网IP',
|
||||
current_ip: '当前IP'
|
||||
current_ip: '当前IP',
|
||||
ip_analysis: 'IP分析',
|
||||
format: '格式',
|
||||
access_type: '访问类型',
|
||||
class: 'IP类别'
|
||||
},
|
||||
date_calculator: {
|
||||
title: '日期计算',
|
||||
@ -383,13 +402,33 @@ export default {
|
||||
text_counter: {
|
||||
title: '文本统计',
|
||||
description: '字数、词数、行数等统计分析工具',
|
||||
clear: '清除',
|
||||
paste: '粘贴',
|
||||
sample: '示例',
|
||||
text_input: '文本输入',
|
||||
placeholder: '请输入或粘贴需要统计的文本...',
|
||||
basic_stats: '基础统计',
|
||||
characters: '字符数',
|
||||
characters_no_spaces: '字符数(不含空格)',
|
||||
words: '词数',
|
||||
lines: '行数',
|
||||
paragraphs: '段落数',
|
||||
sentences: '句子数',
|
||||
character_types: '字符类型',
|
||||
letters: '字母',
|
||||
numbers: '数字',
|
||||
spaces: '空格',
|
||||
punctuation: '标点符号',
|
||||
reading_time: '阅读时间',
|
||||
slow_reading: '慢速阅读',
|
||||
normal_reading: '正常阅读',
|
||||
fast_reading: '快速阅读',
|
||||
top_words: '最常用词汇',
|
||||
character_count: '字符数',
|
||||
word_count: '词数',
|
||||
line_count: '行数',
|
||||
paragraph_count: '段落数',
|
||||
sentence_count: '句子数',
|
||||
reading_time: '阅读时间',
|
||||
reading_speed: '阅读速度',
|
||||
fast: '快速',
|
||||
normal: '正常',
|
||||
@ -431,27 +470,51 @@ export default {
|
||||
image_compressor: {
|
||||
title: '图片压缩',
|
||||
description: '图片压缩优化、质量调整工具',
|
||||
upload_image: '上传图片',
|
||||
compress: '压缩',
|
||||
download: '下载',
|
||||
reset: '重置',
|
||||
upload_image: '上传图片',
|
||||
click_or_drag: '点击或拖拽上传图片',
|
||||
compression_settings: '压缩设置',
|
||||
quality: '质量',
|
||||
width: '宽度',
|
||||
height: '高度',
|
||||
max_width: '最大宽度',
|
||||
max_height: '最大高度',
|
||||
keep_aspect_ratio: '保持宽高比',
|
||||
output_format: '输出格式',
|
||||
original_info: '原图信息',
|
||||
size: '文件大小',
|
||||
dimensions: '尺寸',
|
||||
format: '格式',
|
||||
original_size: '原始大小',
|
||||
original_preview: '原图预览',
|
||||
compressed_preview: '压缩预览',
|
||||
compressed_size: '压缩后大小',
|
||||
compression_ratio: '压缩比',
|
||||
size_reduction: '减少大小',
|
||||
compressing: '压缩中...',
|
||||
width: '宽度',
|
||||
height: '高度',
|
||||
original_size: '原始大小',
|
||||
maintain_aspect_ratio: '保持宽高比',
|
||||
download_result: '下载结果'
|
||||
},
|
||||
qrcode_generator: {
|
||||
title: '二维码生成',
|
||||
description: '文本转二维码、自定义样式工具',
|
||||
text_input: '文本输入',
|
||||
generate: '生成',
|
||||
download: '下载',
|
||||
clear: '清除',
|
||||
text_input: '文本输入',
|
||||
placeholder: '请输入要生成二维码的内容...',
|
||||
settings: '设置选项',
|
||||
size: '尺寸',
|
||||
qr_size: '二维码大小',
|
||||
error_level: '容错级别',
|
||||
foreground_color: '前景色',
|
||||
background_color: '背景色',
|
||||
preview: '预览',
|
||||
qr_code: '二维码',
|
||||
generating: '生成中...',
|
||||
no_preview: '请输入内容并生成二维码',
|
||||
download_qr: '下载二维码',
|
||||
qr_preview: '二维码预览'
|
||||
},
|
||||
@ -488,6 +551,24 @@ export default {
|
||||
description: 'YML与Properties配置文件格式互转',
|
||||
yml_to_properties: 'YML转Properties',
|
||||
properties_to_yml: 'Properties转YML',
|
||||
yml_to_json: 'YML转JSON',
|
||||
json_to_yml: 'JSON转YML',
|
||||
clear: '清空',
|
||||
input: '输入',
|
||||
output: '输出',
|
||||
paste: '粘贴',
|
||||
copy: '复制',
|
||||
input_format: '输入格式',
|
||||
output_format: '输出格式',
|
||||
input_placeholder_yml: '请输入YAML内容...',
|
||||
input_placeholder_properties: '请输入Properties内容...',
|
||||
input_placeholder_json: '请输入JSON内容...',
|
||||
output_placeholder: '转换结果将显示在这里...',
|
||||
use_example: '使用此示例',
|
||||
format_description: '格式说明',
|
||||
yml_example: 'YAML 示例',
|
||||
properties_example: 'Properties 示例',
|
||||
json_example: 'JSON 示例',
|
||||
convert: '转换',
|
||||
yml_input: 'YML输入',
|
||||
properties_input: 'Properties输入',
|
||||
@ -496,13 +577,20 @@ export default {
|
||||
base64_to_image: {
|
||||
title: 'Base64转图片',
|
||||
description: 'Base64与图片双向转换工具',
|
||||
image_to_base64: '图片转Base64',
|
||||
base64_to_image: 'Base64转图片',
|
||||
upload_image: '上传图片',
|
||||
base64_input: 'Base64输入',
|
||||
image_preview: '图片预览',
|
||||
image_info: '图片信息',
|
||||
download_image: '下载图片',
|
||||
clear: '清除',
|
||||
base64_input: 'Base64输入',
|
||||
base64_placeholder: '请输入Base64编码...',
|
||||
image_to_base64: '图片转Base64',
|
||||
click_or_drag: '点击或拖拽上传图片',
|
||||
image_preview: '图片预览',
|
||||
preview_image: '预览图片',
|
||||
converting: '转换中...',
|
||||
no_preview: '请输入Base64或上传图片',
|
||||
base64_output: 'Base64输出',
|
||||
upload_image: '上传图片',
|
||||
image_info: '图片信息',
|
||||
copy_base64: '复制Base64'
|
||||
},
|
||||
image_watermark: {
|
||||
|
@ -8,12 +8,12 @@ import type { Tool } from '@/types/tools'
|
||||
|
||||
// 定义工具列表
|
||||
const tools: Tool[] = [
|
||||
{
|
||||
code: 'json_formatter',
|
||||
icon: faCode,
|
||||
category: ['common', 'json'],
|
||||
keywords: ['json', 'json格式化', '格式化', '美化', '压缩', '校验', 'formatter', 'validator', 'gshjson', 'gshjson', 'jsonxg', 'jxg']
|
||||
},
|
||||
// {
|
||||
// code: 'json_formatter',
|
||||
// icon: faCode,
|
||||
// category: ['common', 'json'],
|
||||
// keywords: ['json', 'json格式化', '格式化', '美化', '压缩', '校验', 'formatter', 'validator', 'gshjson', 'gshjson', 'jsonxg', 'jxg']
|
||||
// },
|
||||
{
|
||||
code: 'http_tester',
|
||||
icon: faGlobe,
|
||||
@ -170,12 +170,6 @@ const tools: Tool[] = [
|
||||
category: ['image'],
|
||||
keywords: ['图标', 'ico', '图片转ico', 'icon', '图标生成', '图标转换', 'favicon', '网站图标', 'tubiao', 'tb', 'zhuanicon', 'icon转换', 'icon生成']
|
||||
},
|
||||
{
|
||||
code: 'cron_generator',
|
||||
icon: faCalendarAlt,
|
||||
category: ['datetime'],
|
||||
keywords: ['cron', 'cron表达式', '定时任务', '调度', '表达式生成', '执行时间', 'crontab', 'quartz', 'schedule', 'dingshi', 'dingshibiaodashi', 'dsrw', 'bds', 'cronbds']
|
||||
},
|
||||
{
|
||||
code: 'chrome_bookmark_recovery',
|
||||
icon: faBookmark,
|
||||
|
Reference in New Issue
Block a user