refactor: GitHub URL 改为构建时自动从 git remote origin 识别

前端:vue.config.js 通过 DefinePlugin 注入 VUE_APP_GITHUB_REPO_URL,
Home.vue/Playground.vue 中硬编码的 GitHub URL 全部改为动态变量。
后端:parser/pom.xml 添加 gmavenplus-plugin 在 initialize 阶段从
git remote origin 解析 github.owner/github.repo,SCM 字段引用 property。
This commit is contained in:
yukaidi
2026-05-29 10:29:44 +08:00
parent 4a0fe61d30
commit cfe8352d45
4 changed files with 60 additions and 11 deletions

View File

@@ -35,9 +35,9 @@
</developers> </developers>
<scm> <scm>
<connection>scm:git:https://github.com/yukaidi1220/netdisk-fast-download.git</connection> <connection>scm:git:https://github.com/${github.owner}/${github.repo}.git</connection>
<developerConnection>scm:git:ssh://git@github.com:yukaidi1220/netdisk-fast-download.git</developerConnection> <developerConnection>scm:git:ssh://git@github.com:${github.owner}/${github.repo}.git</developerConnection>
<url>https://github.com/yukaidi1220/netdisk-fast-download</url> <url>https://github.com/${github.owner}/${github.repo}</url>
</scm> </scm>
<distributionManagement> <distributionManagement>
@@ -124,6 +124,34 @@
<build> <build>
<plugins> <plugins>
<!-- 从 git remote origin 自动识别 GitHub 仓库地址 -->
<plugin>
<groupId>org.codehaus.gmavenplus</groupId>
<artifactId>gmavenplus-plugin</artifactId>
<version>4.1.1</version>
<executions>
<execution>
<phase>initialize</phase>
<goals><goal>execute</goal></goals>
<configuration>
<scripts>
<script>
def url = 'git remote get-url origin'.execute().text.trim()
def m = url =~ /github\.com[:/]([^/]+)\/([^/.]+?)(?:\.git)?$/
if (m.find()) {
project.properties.setProperty('github.owner', m.group(1))
project.properties.setProperty('github.repo', m.group(2))
} else {
project.properties.setProperty('github.owner', 'qaiu')
project.properties.setProperty('github.repo', 'netdisk-fast-download')
}
</script>
</scripts>
</configuration>
</execution>
</executions>
</plugin>
<!-- 编译 --> <!-- 编译 -->
<plugin> <plugin>
<groupId>org.apache.maven.plugins</groupId> <groupId>org.apache.maven.plugins</groupId>

View File

@@ -19,11 +19,11 @@
</el-dialog> --> </el-dialog> -->
<!-- 顶部反馈栏小号灰色无红边框 --> <!-- 顶部反馈栏小号灰色无红边框 -->
<div class="feedback-bar"> <div class="feedback-bar">
<a href="https://github.com/yukaidi1220/netdisk-fast-download/issues" target="_blank" rel="noopener" class="feedback-link mini"> <a :href="githubRepoUrl + '/issues'" target="_blank" rel="noopener" class="feedback-link mini">
<i class="fas fa-bug feedback-icon"></i> <i class="fas fa-bug feedback-icon"></i>
反馈 反馈
</a> </a>
<a href="https://github.com/yukaidi1220/netdisk-fast-download" target="_blank" rel="noopener" class="feedback-link mini"> <a :href="githubRepoUrl" target="_blank" rel="noopener" class="feedback-link mini">
<i class="fab fa-github feedback-icon"></i> <i class="fab fa-github feedback-icon"></i>
源码 源码
</a> </a>
@@ -75,7 +75,7 @@
<div class="project-intro"> <div class="project-intro">
<div class="intro-title">NFD网盘直链解析0.3.0</div> <div class="intro-title">NFD网盘直链解析0.3.0</div>
<div class="intro-desc"> <div class="intro-desc">
<div>支持网盘蓝奏云蓝奏云优享小飞机盘123云盘iCloud移动云空间联想乐云QQ闪传等 <el-link style="color:#606cf5" href="https://github.com/yukaidi1220/netdisk-fast-download?tab=readme-ov-file#%E7%BD%91%E7%9B%98%E6%94%AF%E6%8C%81%E6%83%85%E5%86%B5" target="_blank"> &gt;&gt; </el-link></div> <div>支持网盘蓝奏云蓝奏云优享小飞机盘123云盘iCloud移动云空间联想乐云QQ闪传等 <el-link style="color:#606cf5" :href="githubRepoUrl + '?tab=readme-ov-file#%E7%BD%91%E7%9B%98%E6%94%AF%E6%8C%81%E6%83%85%E5%86%B5'" target="_blank"> &gt;&gt; </el-link></div>
<div>文件夹解析支持蓝奏云蓝奏云优享小飞机盘123云盘</div> <div>文件夹解析支持蓝奏云蓝奏云优享小飞机盘123云盘</div>
</div> </div>
</div> </div>
@@ -714,6 +714,9 @@ export default {
} }
}, },
computed: { computed: {
githubRepoUrl() {
return process.env.VUE_APP_GITHUB_REPO_URL
},
// 检查是否配置了认证信息(针对当前链接的网盘类型) // 检查是否配置了认证信息(针对当前链接的网盘类型)
hasAuthConfig() { hasAuthConfig() {
const panType = this.getCurrentPanType() const panType = this.getCurrentPanType()
@@ -1436,7 +1439,7 @@ export default {
错误信息:${JSON.stringify(this.errorDetail, null, 2)}`; 错误信息:${JSON.stringify(this.errorDetail, null, 2)}`;
navigator.clipboard.writeText(text).then(() => { navigator.clipboard.writeText(text).then(() => {
this.$message.success('已复制分享信息和错误详情'); this.$message.success('已复制分享信息和错误详情');
window.open('https://github.com/yukaidi1220/netdisk-fast-download/issues/new', '_blank', 'noopener,noreferrer'); window.open(`${this.githubRepoUrl}/issues/new`, '_blank', 'noopener,noreferrer');
}).catch(() => { }).catch(() => {
this.$message.error('复制失败'); this.$message.error('复制失败');
}); });

View File

@@ -653,22 +653,22 @@
<p>更多详细信息请参考 GitHub 仓库文档</p> <p>更多详细信息请参考 GitHub 仓库文档</p>
<ul> <ul>
<li> <li>
<a href="https://github.com/yukaidi1220/netdisk-fast-download/blob/main/parser/doc/JAVASCRIPT_PARSER_GUIDE.md" target="_blank" rel="noopener noreferrer"> <a :href="githubRepoUrl + '/blob/main/parser/doc/JAVASCRIPT_PARSER_GUIDE.md'" target="_blank" rel="noopener noreferrer">
JavaScript 解析器开发指南 JavaScript 解析器开发指南
</a> </a>
</li> </li>
<li> <li>
<a href="https://github.com/yukaidi1220/netdisk-fast-download/blob/main/parser/doc/CUSTOM_PARSER_GUIDE.md" target="_blank" rel="noopener noreferrer"> <a :href="githubRepoUrl + '/blob/main/parser/doc/CUSTOM_PARSER_GUIDE.md'" target="_blank" rel="noopener noreferrer">
自定义解析器扩展指南 自定义解析器扩展指南
</a> </a>
</li> </li>
<li> <li>
<a href="https://github.com/yukaidi1220/netdisk-fast-download/blob/main/parser/doc/CUSTOM_PARSER_QUICKSTART.md" target="_blank" rel="noopener noreferrer"> <a :href="githubRepoUrl + '/blob/main/parser/doc/CUSTOM_PARSER_QUICKSTART.md'" target="_blank" rel="noopener noreferrer">
快速开始教程 快速开始教程
</a> </a>
</li> </li>
<li> <li>
<a href="https://github.com/yukaidi1220/netdisk-fast-download/blob/main/parser/README.md" target="_blank" rel="noopener noreferrer"> <a :href="githubRepoUrl + '/blob/main/parser/README.md'" target="_blank" rel="noopener noreferrer">
解析器模块文档 解析器模块文档
</a> </a>
</li> </li>
@@ -858,6 +858,7 @@ export default {
}, },
setup() { setup() {
const router = useRouter(); const router = useRouter();
const githubRepoUrl = process.env.VUE_APP_GITHUB_REPO_URL;
// 语言常量 // 语言常量
const LANGUAGE = { const LANGUAGE = {
@@ -2268,6 +2269,7 @@ curl "${baseUrl}/json/parser?url=${encodeURIComponent(exampleUrl)}"</pre>
}); });
return { return {
githubRepoUrl,
LANGUAGE, LANGUAGE,
editorRef, editorRef,
jsCode, jsCode,

View File

@@ -1,10 +1,23 @@
const path = require("path"); const path = require("path");
const { execSync } = require("child_process");
const webpack = require("webpack");
function resolve(dir) { function resolve(dir) {
return path.join(__dirname, dir) return path.join(__dirname, dir)
} }
// 从 git remote origin 自动识别 GitHub 仓库地址
function getGitHubRepoUrl() {
try {
const remoteUrl = execSync('git remote get-url origin', { encoding: 'utf-8', cwd: path.resolve(__dirname, '..') }).trim();
const match = remoteUrl.match(/github\.com[:/]([^/]+\/[^/.]+?)(?:\.git)?$/);
if (match) return `https://github.com/${match[1]}`;
} catch (e) {}
return 'https://github.com/qaiu/netdisk-fast-download';
}
const GITHUB_REPO_URL = getGitHubRepoUrl();
const CompressionPlugin = require('compression-webpack-plugin'); const CompressionPlugin = require('compression-webpack-plugin');
const FileManagerPlugin = require('filemanager-webpack-plugin'); const FileManagerPlugin = require('filemanager-webpack-plugin');
const MonacoEditorPlugin = require('monaco-editor-webpack-plugin'); const MonacoEditorPlugin = require('monaco-editor-webpack-plugin');
@@ -55,6 +68,9 @@ module.exports = {
] ]
}, },
plugins: [ plugins: [
new webpack.DefinePlugin({
'process.env.VUE_APP_GITHUB_REPO_URL': JSON.stringify(GITHUB_REPO_URL)
}),
new MonacoEditorPlugin({ new MonacoEditorPlugin({
languages: ['javascript', 'typescript', 'json'], languages: ['javascript', 'typescript', 'json'],
features: ['coreCommands', 'find', 'format', 'suggest', 'quickCommand'], features: ['coreCommands', 'find', 'format', 'suggest', 'quickCommand'],