mirror of
https://github.com/qaiu/netdisk-fast-download.git
synced 2026-06-10 15:37:28 +00:00
- QQscTool: 支持多文件和目录解析,通过 GetFileList API 实现递归目录导航 - Home: 从粘贴文本中自动提取分享链接 - DirectoryTree: 目录浏览添加复制直链按钮 - domainName 改为可选,未配置时自动从请求地址推断 - 统一版本号管理,GitHub URL 构建时自动从 git remote origin 识别 - vue.config.js 添加前端构建配置,sync-version.js 构建时同步版本号
131 lines
4.4 KiB
JavaScript
131 lines
4.4 KiB
JavaScript
|
||
const path = require("path");
|
||
const { execSync } = require("child_process");
|
||
const webpack = require("webpack");
|
||
|
||
function resolve(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';
|
||
}
|
||
// 从根 pom.xml 读取项目版本号(单一版本来源)
|
||
function getProjectVersion() {
|
||
try {
|
||
const pomContent = require('fs').readFileSync(path.resolve(__dirname, '../pom.xml'), 'utf-8');
|
||
const match = pomContent.match(/<revision>([^<]+)<\/revision>/);
|
||
if (match) return match[1];
|
||
} catch (e) {}
|
||
return require('./package.json').version;
|
||
}
|
||
const PROJECT_VERSION = getProjectVersion();
|
||
|
||
const GITHUB_REPO_URL = getGitHubRepoUrl();
|
||
|
||
const CompressionPlugin = require('compression-webpack-plugin');
|
||
const FileManagerPlugin = require('filemanager-webpack-plugin');
|
||
const MonacoEditorPlugin = require('monaco-editor-webpack-plugin');
|
||
|
||
module.exports = {
|
||
productionSourceMap: false, // 是否在构建生产包时生成sourceMap文件,false将提高构建速度
|
||
transpileDependencies: true,
|
||
lintOnSave: false,
|
||
outputDir: 'nfd-front',
|
||
devServer: {
|
||
host: '127.0.0.1',
|
||
port: 6444,
|
||
proxy: {
|
||
'/parser': {
|
||
target: 'http://127.0.0.1:6401/', // 请求本地
|
||
ws: false
|
||
},
|
||
'/v2': {
|
||
target: 'http://127.0.0.1:6401/', // 请求本地
|
||
ws: false
|
||
},
|
||
'/json': {
|
||
target: 'http://127.0.0.1:6401/', // 请求本地
|
||
ws: false
|
||
},
|
||
'/d': {
|
||
target: 'http://127.0.0.1:6401/', // 请求本地
|
||
ws: false
|
||
},
|
||
}
|
||
},
|
||
configureWebpack: {
|
||
// provide the app's title in webpack's name field, so that
|
||
// it can be accessed in list.html to inject the correct title.
|
||
name: 'Netdisk fast download',
|
||
resolve: {
|
||
alias: {
|
||
'@': resolve('src')
|
||
}
|
||
},
|
||
// Monaco Editor配置 - 使用本地打包
|
||
module: {
|
||
rules: [
|
||
{
|
||
test: /\.ttf$/,
|
||
type: 'asset/resource'
|
||
}
|
||
]
|
||
},
|
||
plugins: [
|
||
new webpack.DefinePlugin({
|
||
'process.env.VUE_APP_GITHUB_REPO_URL': JSON.stringify(GITHUB_REPO_URL),
|
||
'process.env.VUE_APP_VERSION': JSON.stringify(PROJECT_VERSION)
|
||
}),
|
||
new MonacoEditorPlugin({
|
||
languages: ['javascript', 'typescript', 'json'],
|
||
features: ['coreCommands', 'find', 'format', 'suggest', 'quickCommand'],
|
||
publicPath: process.env.NODE_ENV === 'production' ? './' : '/',
|
||
// Worker 文件输出路径
|
||
filename: 'js/[name].worker.js'
|
||
}),
|
||
new CompressionPlugin({
|
||
test: /\.js$|\.html$|\.css/, // 匹配文件
|
||
threshold: 10240, // 对超过10k文件压缩
|
||
// 排除 js 目录下的 worker 文件(Monaco Editor 使用 vs/assets 下的)
|
||
exclude: /js\/.*\.worker\.js$/
|
||
}),
|
||
new FileManagerPlugin({ //初始化 filemanager-webpack-plugin 插件实例
|
||
events: {
|
||
onEnd: {
|
||
mkdir: ['./nfd-front'],
|
||
delete: [
|
||
{ source: './nfd-front.zip', options: { force: true } },
|
||
{ source: '../webroot/nfd-front', options: { force: true } },
|
||
{ source: './nfd-front/view/.git', options: { force: true } },
|
||
{ source: './nfd-front/view/.gitignore', options: { force: true } },
|
||
{ source: '../webroot/nfd-front/view/.git', options: { force: true } },
|
||
{ source: '../webroot/nfd-front/view/.gitignore', options: { force: true } },
|
||
],
|
||
copy: [
|
||
// 复制 Monaco Editor 的 vs 目录到 js/vs
|
||
{
|
||
source: './node_modules/monaco-editor/min/vs',
|
||
destination: './nfd-front/js/vs'
|
||
},
|
||
{ source: './nfd-front', destination: '../webroot/nfd-front' }
|
||
],
|
||
archive: [ //然后我们选择dist文件夹将之打包成dist.zip并放在根目录
|
||
{
|
||
source: './nfd-front', destination: './nfd-front.zip', options: {}
|
||
},
|
||
]
|
||
}
|
||
}
|
||
})
|
||
]
|
||
},
|
||
|
||
}
|