filecat 7.8.0 → 7.10.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +201 -201
- package/README.md +182 -182
- package/build/dist/{4967.3fd3bd40a2b5a3b52428.js → 1060.198d91e2dfc174317c3a.js} +1 -1
- package/build/dist/1075.05eed88707339ca32044.js +1 -0
- package/build/dist/{1142.121454b1de53689b7367.js → 1142.bc43fae2e5e38d9359df.js} +1 -1
- package/build/dist/1384.edbad9c24d883a59724d.js +1 -0
- package/build/dist/1417.d390b18dd58ff5c28160.js +1 -0
- package/build/dist/1448.4db495e1389c0c8445b3.js +1 -0
- package/build/dist/{3324.22efcb1c431177b1cf5f.js → 1455.26a021eb94e5bdd5bec2.js} +1 -1
- package/build/dist/{1636.b6a17252dfd0d22f09a7.js → 1636.b80b1883358e132d3424.js} +1 -1
- package/build/dist/{1832.8ea5c3e8288df0b7fd5c.js → 1832.a01933ba5df99576ecc2.js} +1 -1
- package/build/dist/2300.c99b1dd4e752cdfd5e32.js +2 -0
- package/build/dist/{2300.9e1baa1c0368abe53d96.js.LICENSE.txt → 2300.c99b1dd4e752cdfd5e32.js.LICENSE.txt} +1 -1
- package/build/dist/239.f570f06d4b9c020f1013.js +1 -0
- package/build/dist/2479.294792ef5d360ad64abc.js +1 -0
- package/build/dist/2542.26cb302b60de23166227.js +1 -0
- package/build/dist/{259.81bb9e049e5ef587a96f.js → 259.3c0eb22e9b43ffb63c9c.js} +1 -1
- package/build/dist/2626.3bcfe1f26d9cb796a925.js +1 -0
- package/build/dist/2674.15ca3c6ac911cf6e6e2f.js +1 -0
- package/build/dist/3233.43bdd7c12ca829d56116.js +1 -0
- package/build/dist/3299.6ab0d94f02171cd762cc.js +1 -0
- package/build/dist/{6992.f6a07311a638794c24f7.js → 3471.ef3b5dcfe37963034187.js} +1 -1
- package/build/dist/{3528.56eeefab6fca5884e2a6.js → 3528.0f8f34028d92fa87c518.js} +1 -1
- package/build/dist/{3659.8a31495bb8f38c0ffa7c.js → 3659.dd03dc2ac52a3ff19105.js} +1 -1
- package/build/dist/4004.f0193c43fb891fdfb0e4.js +1 -0
- package/build/dist/{4560.8ef2e4b60cc86d019dd6.js → 4560.fd9f8cf2d6022b1d3a94.js} +1 -1
- package/build/dist/{4903.407cafe944a297471f5a.js → 4903.070aaa53a243baf05133.js} +1 -1
- package/build/dist/{4946.c95d4f426146e0180172.js → 4946.d578f6ba367a742d80bf.js} +2 -2
- package/build/dist/4986.f244efce9cf6be21f846.js +1 -0
- package/build/dist/5272.1f0dfac07ba202e7d323.js +1 -0
- package/build/dist/{5308.052f45c15785487b3766.js → 5308.d1e5ccb49396fc1b026d.js} +1 -1
- package/build/dist/{5516.645e4a900df9bdc1806c.js → 5516.88521f3a3c7101c46df3.js} +1 -1
- package/build/dist/5614.43bdd7c12ca829d56116.js +1 -0
- package/build/dist/{5139.adf9574d9b54a216e041.js → 5709.81f43e3c021fafdfe36f.js} +1 -1
- package/build/dist/{5744.e9f1efb88a617b05b709.js → 5744.0f8a0432b73b2eb0a7ff.js} +1 -1
- package/build/dist/{5877.ca081c4798194230243c.js → 5877.98d0475aaf4058b9a715.js} +1 -1
- package/build/dist/6010.5400c344149450c83284.js +1 -0
- package/build/dist/{6247.917e3fbef5dc5fbaf937.js → 6247.525b0b68872036ac2fa6.js} +1 -1
- package/build/dist/{7520.fbb0bc2a05cf94e15418.js → 6322.552511b5cb12cd0c821c.js} +1 -1
- package/build/dist/6492.17ecd8515fa512ce9306.js +1 -0
- package/build/dist/{676.a75318a8b598d8daadf0.js → 676.356039ef6f28f96b8c8b.js} +1 -1
- package/build/dist/{6805.bf0c964ab84f0fcc78be.js → 6805.373ac0e7d6555e4a6459.js} +1 -1
- package/build/dist/{6919.8cf13c01184b7148b28e.js → 6919.c7cc8617b658198d4924.js} +1 -1
- package/build/dist/{7038.4e4fc8e405c56d3080e2.js → 7038.166f915547d27e4dc5e4.js} +1 -1
- package/build/dist/{7759.0b68912ff9ef10869f59.js → 7759.7cd3fe8e5d37df25804c.js} +1 -1
- package/build/dist/7873.e3098bc6f510e5bea55f.js +1 -0
- package/build/dist/7923.d44556578af4d3d7cea3.js +2 -0
- package/build/dist/7943.acf25a5e98dd13290985.js +1 -0
- package/build/dist/8090.8977224618a14ae42159.js +2 -0
- package/build/dist/8302.ce97557b7cf7c8387942.js +1 -0
- package/build/dist/8319.6a6b9651c87a1bb4cbb9.js +1 -0
- package/build/dist/{8603.4142ce42c1635f493eca.js → 8603.f1cbcfd64cde885f9809.js} +1 -1
- package/build/dist/8649.d6055ad75975b803bbc1.js +1 -0
- package/build/dist/{8727.3628c746061aed7a4077.js → 8727.8658835acb7e0b6e5acc.js} +1 -1
- package/build/dist/{8765.a5633d054abb67142fc3.js → 8765.8758c290a6b132f2ce7f.js} +1 -1
- package/build/dist/8772.2c35012c25ac9eb5f74d.js +2 -0
- package/build/dist/{8772.e8f9731c1c061f1cdf56.js.LICENSE.txt → 8772.2c35012c25ac9eb5f74d.js.LICENSE.txt} +1 -1
- package/build/dist/8781.6bd14487d172e004e3d3.js +1 -0
- package/build/dist/9299.7358ccf05b1415ed7959.js +1 -0
- package/build/dist/9334.a25983aafdcbde63ae5e.js +1 -0
- package/build/dist/{9546.e7206c968e92371ae2b1.js → 9546.2cecad04cf676a6616cd.js} +1 -1
- package/build/dist/dark.css +839 -839
- package/build/dist/filerobot-image-editor.min.js +42445 -42445
- package/build/dist/google-dark.css +2032 -2032
- package/build/dist/google.css +1719 -1719
- package/build/dist/index.html +1 -1
- package/build/dist/main.ab3398f34c41e61310ae.js +2 -0
- package/build/dist/{main.98bb29605335d9b2219f.js.LICENSE.txt → main.ab3398f34c41e61310ae.js.LICENSE.txt} +1 -1
- package/build/dist/rle.js +17867 -17867
- package/build/main.js +1 -1
- package/build/plugin/core.type.d.ts +62 -0
- package/build/threads.work.filecat.js +1 -1
- package/env +26 -26
- package/package.json +211 -211
- package/shell/build.js +161 -161
- package/shell/config/.babelrc +14 -14
- package/shell/config/base.webpack.config.js +78 -78
- package/shell/config/common-bin.config.js +44 -44
- package/shell/config/env.js +10 -10
- package/shell/config/prebuild-file-path.js +17 -17
- package/shell/config/webpack.exe.config.js +36 -36
- package/shell/config/webpack.npm.config.js +44 -44
- package/shell/config/webpack.web.config.js +152 -152
- package/shell/dev.js +51 -51
- package/shell/docker-build.sh +2 -2
- package/shell/filecat +1 -1
- package/shell/filecat-watch +1 -1
- package/shell/install.js +48 -48
- package/shell/net-agent/git-clone.bat +23 -23
- package/shell/net-agent/git-pull.bat +17 -17
- package/shell/net-agent/git-push.bat +17 -17
- package/shell/pkg.ts +50 -50
- package/shell/postinstall-optional.js +29 -29
- package/shell/start/filecat-install.sh +22 -22
- package/shell/start/filecat-run.sh +2 -2
- package/shell/start/windows-install.js +178 -178
- package/shell/start/windows-uninstall.js +131 -131
- package/shell/util/file.js +46 -46
- package/build/dist/1075.493acb74297c1e753de2.js +0 -1
- package/build/dist/1384.0d0fc5faa899c9eddcbe.js +0 -1
- package/build/dist/1448.0710f04bed1c52e6a5db.js +0 -1
- package/build/dist/2300.9e1baa1c0368abe53d96.js +0 -2
- package/build/dist/2479.15722ac55b05c521f4f7.js +0 -1
- package/build/dist/2542.23fb13b1623c9f7c3fc1.js +0 -1
- package/build/dist/2626.05d1faa293e0a3318b9b.js +0 -1
- package/build/dist/2674.0c822a9c458f923a4eff.js +0 -1
- package/build/dist/2851.2195b5906b2c224c7bf7.js +0 -1
- package/build/dist/3140.794a212da633caf38b3a.js +0 -2
- package/build/dist/3233.fb6bffd5e097e4ac9423.js +0 -1
- package/build/dist/3299.d01f5a742d80f4e6e25b.js +0 -1
- package/build/dist/4004.de90f1192487a24a0a9a.js +0 -1
- package/build/dist/4437.4d5a0965043471411a00.js +0 -1
- package/build/dist/4986.78047106f3a0d2d71199.js +0 -1
- package/build/dist/5272.0b70ee8ec5f083fb9f5b.js +0 -1
- package/build/dist/5614.fb6bffd5e097e4ac9423.js +0 -1
- package/build/dist/6010.2da6f8c2fce5292557cb.js +0 -1
- package/build/dist/6492.3ee4060598de873d8e8f.js +0 -1
- package/build/dist/7756.2f851693ba030c42dde8.js +0 -1
- package/build/dist/7873.11d04b741d2b499d9cb9.js +0 -1
- package/build/dist/7923.861345fd55941e8089a1.js +0 -2
- package/build/dist/7943.54c702542d55f576a576.js +0 -1
- package/build/dist/7954.6ce241a8ed27cb26efc6.js +0 -1
- package/build/dist/8302.c1c381630b4ec76bf8ab.js +0 -1
- package/build/dist/8319.c15a3674ec7abc493595.js +0 -1
- package/build/dist/8772.e8f9731c1c061f1cdf56.js +0 -2
- package/build/dist/9299.ed4de6cd4f4bfa0a966a.js +0 -1
- package/build/dist/main.98bb29605335d9b2219f.js +0 -2
- /package/build/dist/{4946.c95d4f426146e0180172.js.LICENSE.txt → 4946.d578f6ba367a742d80bf.js.LICENSE.txt} +0 -0
- /package/build/dist/{7923.861345fd55941e8089a1.js.LICENSE.txt → 7923.d44556578af4d3d7cea3.js.LICENSE.txt} +0 -0
- /package/build/dist/{3140.794a212da633caf38b3a.js.LICENSE.txt → 8090.8977224618a14ae42159.js.LICENSE.txt} +0 -0
|
@@ -1,18 +1,18 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.ptyPath = void 0;
|
|
4
|
-
var fs = require("fs");
|
|
5
|
-
var os = require("os");
|
|
6
|
-
var path = require("path");
|
|
7
|
-
function prebuildName() {
|
|
8
|
-
var tags = [];
|
|
9
|
-
tags.push(process.versions.hasOwnProperty('electron') ? 'electron' : 'node');
|
|
10
|
-
tags.push('abi' + process.versions.modules);
|
|
11
|
-
if (os.platform() === 'linux' && fs.existsSync('/etc/alpine-release')) {
|
|
12
|
-
tags.push('musl');
|
|
13
|
-
}
|
|
14
|
-
return tags.join('.') + '.node';
|
|
15
|
-
}
|
|
16
|
-
var pathToBuild = path.resolve(__dirname, "../prebuilds/".concat(os.platform(), "-").concat(os.arch(), "/").concat(prebuildName()));
|
|
17
|
-
exports.ptyPath = fs.existsSync(pathToBuild) ? pathToBuild : null;
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ptyPath = void 0;
|
|
4
|
+
var fs = require("fs");
|
|
5
|
+
var os = require("os");
|
|
6
|
+
var path = require("path");
|
|
7
|
+
function prebuildName() {
|
|
8
|
+
var tags = [];
|
|
9
|
+
tags.push(process.versions.hasOwnProperty('electron') ? 'electron' : 'node');
|
|
10
|
+
tags.push('abi' + process.versions.modules);
|
|
11
|
+
if (os.platform() === 'linux' && fs.existsSync('/etc/alpine-release')) {
|
|
12
|
+
tags.push('musl');
|
|
13
|
+
}
|
|
14
|
+
return tags.join('.') + '.node';
|
|
15
|
+
}
|
|
16
|
+
var pathToBuild = path.resolve(__dirname, "../prebuilds/".concat(os.platform(), "-").concat(os.arch(), "/").concat(prebuildName()));
|
|
17
|
+
exports.ptyPath = fs.existsSync(pathToBuild) ? pathToBuild : null;
|
|
18
18
|
//# sourceMappingURL=prebuild-file-path.js.map
|
|
@@ -1,36 +1,36 @@
|
|
|
1
|
-
const path = require('path');
|
|
2
|
-
const nodeExternals = require('webpack-node-externals');
|
|
3
|
-
const webpack = require('webpack');
|
|
4
|
-
const TerserPlugin = require("terser-webpack-plugin");
|
|
5
|
-
const package_data = require("../../package.json")
|
|
6
|
-
const {base_url} = require("./env");
|
|
7
|
-
const { _node_rules, get_exe_plugins, pkg_externals} = require("./base.webpack.config");
|
|
8
|
-
|
|
9
|
-
module.exports = {
|
|
10
|
-
target: 'node', // 指定打包结果运行在node环境下
|
|
11
|
-
mode: 'production', // 或者 'production'
|
|
12
|
-
entry: path.join(__dirname, "..", "..", "build", "server", "main", "server.js"), // 你的TypeScript入口文件路径
|
|
13
|
-
output: {
|
|
14
|
-
path: path.resolve(__dirname, "..", "..", "build"), // 输出目录
|
|
15
|
-
filename: 'main.js', // 输出文件名
|
|
16
|
-
},
|
|
17
|
-
resolve: {
|
|
18
|
-
extensions: ['.ts', '.js', '.node'], // 解析文件时自动补全的文件扩展名
|
|
19
|
-
},
|
|
20
|
-
module: {
|
|
21
|
-
rules: _node_rules
|
|
22
|
-
},
|
|
23
|
-
externalsPresets: { node: true },
|
|
24
|
-
externals: pkg_externals,
|
|
25
|
-
// externals: [nodeExternals()], // 将所有的外部模块排除打包
|
|
26
|
-
plugins:get_exe_plugins(),
|
|
27
|
-
optimization: {
|
|
28
|
-
minimize: true, // 压缩Js代码
|
|
29
|
-
minimizer: [
|
|
30
|
-
new TerserPlugin({
|
|
31
|
-
// extractComments: true,//不将注释提取到单独的文件中
|
|
32
|
-
}),
|
|
33
|
-
],
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
};
|
|
1
|
+
const path = require('path');
|
|
2
|
+
const nodeExternals = require('webpack-node-externals');
|
|
3
|
+
const webpack = require('webpack');
|
|
4
|
+
const TerserPlugin = require("terser-webpack-plugin");
|
|
5
|
+
const package_data = require("../../package.json")
|
|
6
|
+
const {base_url} = require("./env");
|
|
7
|
+
const { _node_rules, get_exe_plugins, pkg_externals} = require("./base.webpack.config");
|
|
8
|
+
|
|
9
|
+
module.exports = {
|
|
10
|
+
target: 'node', // 指定打包结果运行在node环境下
|
|
11
|
+
mode: 'production', // 或者 'production'
|
|
12
|
+
entry: path.join(__dirname, "..", "..", "build", "server", "main", "server.js"), // 你的TypeScript入口文件路径
|
|
13
|
+
output: {
|
|
14
|
+
path: path.resolve(__dirname, "..", "..", "build"), // 输出目录
|
|
15
|
+
filename: 'main.js', // 输出文件名
|
|
16
|
+
},
|
|
17
|
+
resolve: {
|
|
18
|
+
extensions: ['.ts', '.js', '.node'], // 解析文件时自动补全的文件扩展名
|
|
19
|
+
},
|
|
20
|
+
module: {
|
|
21
|
+
rules: _node_rules
|
|
22
|
+
},
|
|
23
|
+
externalsPresets: { node: true },
|
|
24
|
+
externals: pkg_externals,
|
|
25
|
+
// externals: [nodeExternals()], // 将所有的外部模块排除打包
|
|
26
|
+
plugins:get_exe_plugins(),
|
|
27
|
+
optimization: {
|
|
28
|
+
minimize: true, // 压缩Js代码
|
|
29
|
+
minimizer: [
|
|
30
|
+
new TerserPlugin({
|
|
31
|
+
// extractComments: true,//不将注释提取到单独的文件中
|
|
32
|
+
}),
|
|
33
|
+
],
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
};
|
|
@@ -1,44 +1,44 @@
|
|
|
1
|
-
const path = require('path');
|
|
2
|
-
const webpack = require('webpack');
|
|
3
|
-
const TerserPlugin = require("terser-webpack-plugin");
|
|
4
|
-
const package_data = require("../../package.json")
|
|
5
|
-
const {base_url} = require("./env");
|
|
6
|
-
const {npm_externals, common_plugins} = require("./base.webpack.config");
|
|
7
|
-
module.exports = {
|
|
8
|
-
target: 'node', // 指定打包结果运行在node环境下
|
|
9
|
-
mode: 'production', // 或者 'production'
|
|
10
|
-
entry: path.join(__dirname, "..", "..", "build", "server", "main", "server.js"), // 你的TypeScript入口文件路径
|
|
11
|
-
output: {
|
|
12
|
-
path: path.resolve(__dirname, "..", "..", "build"), // 输出目录
|
|
13
|
-
filename: 'main.js', // 输出文件名
|
|
14
|
-
},
|
|
15
|
-
resolve: {
|
|
16
|
-
// 入口是 tsc 编译后的 .js,不需要 webpack 解析 .ts
|
|
17
|
-
extensions: ['.js', '.node']
|
|
18
|
-
},
|
|
19
|
-
module: {
|
|
20
|
-
rules: [
|
|
21
|
-
]
|
|
22
|
-
},
|
|
23
|
-
externalsPresets: { node: true },
|
|
24
|
-
externals: npm_externals,
|
|
25
|
-
plugins: [
|
|
26
|
-
new webpack.DefinePlugin(common_plugins),
|
|
27
|
-
// new webpack.IgnorePlugin({ // 前面已经排除了可能含义.node的项目 这里就不需要了
|
|
28
|
-
// resourceRegExp: /\.node$/
|
|
29
|
-
// // contextRegExp: /moment$/,
|
|
30
|
-
// }),
|
|
31
|
-
// new webpack.IgnorePlugin({
|
|
32
|
-
// resourceRegExp: /Addon$/
|
|
33
|
-
// // contextRegExp: /moment$/,
|
|
34
|
-
// }),
|
|
35
|
-
],
|
|
36
|
-
optimization: {
|
|
37
|
-
minimize: true, // 压缩Js代码
|
|
38
|
-
minimizer: [
|
|
39
|
-
new TerserPlugin({
|
|
40
|
-
// extractComments: true,//不将注释提取到单独的文件中
|
|
41
|
-
}),
|
|
42
|
-
],
|
|
43
|
-
}
|
|
44
|
-
};
|
|
1
|
+
const path = require('path');
|
|
2
|
+
const webpack = require('webpack');
|
|
3
|
+
const TerserPlugin = require("terser-webpack-plugin");
|
|
4
|
+
const package_data = require("../../package.json")
|
|
5
|
+
const {base_url} = require("./env");
|
|
6
|
+
const {npm_externals, common_plugins} = require("./base.webpack.config");
|
|
7
|
+
module.exports = {
|
|
8
|
+
target: 'node', // 指定打包结果运行在node环境下
|
|
9
|
+
mode: 'production', // 或者 'production'
|
|
10
|
+
entry: path.join(__dirname, "..", "..", "build", "server", "main", "server.js"), // 你的TypeScript入口文件路径
|
|
11
|
+
output: {
|
|
12
|
+
path: path.resolve(__dirname, "..", "..", "build"), // 输出目录
|
|
13
|
+
filename: 'main.js', // 输出文件名
|
|
14
|
+
},
|
|
15
|
+
resolve: {
|
|
16
|
+
// 入口是 tsc 编译后的 .js,不需要 webpack 解析 .ts
|
|
17
|
+
extensions: ['.js', '.node']
|
|
18
|
+
},
|
|
19
|
+
module: {
|
|
20
|
+
rules: [
|
|
21
|
+
]
|
|
22
|
+
},
|
|
23
|
+
externalsPresets: { node: true },
|
|
24
|
+
externals: npm_externals,
|
|
25
|
+
plugins: [
|
|
26
|
+
new webpack.DefinePlugin(common_plugins),
|
|
27
|
+
// new webpack.IgnorePlugin({ // 前面已经排除了可能含义.node的项目 这里就不需要了
|
|
28
|
+
// resourceRegExp: /\.node$/
|
|
29
|
+
// // contextRegExp: /moment$/,
|
|
30
|
+
// }),
|
|
31
|
+
// new webpack.IgnorePlugin({
|
|
32
|
+
// resourceRegExp: /Addon$/
|
|
33
|
+
// // contextRegExp: /moment$/,
|
|
34
|
+
// }),
|
|
35
|
+
],
|
|
36
|
+
optimization: {
|
|
37
|
+
minimize: true, // 压缩Js代码
|
|
38
|
+
minimizer: [
|
|
39
|
+
new TerserPlugin({
|
|
40
|
+
// extractComments: true,//不将注释提取到单独的文件中
|
|
41
|
+
}),
|
|
42
|
+
],
|
|
43
|
+
}
|
|
44
|
+
};
|
|
@@ -1,152 +1,152 @@
|
|
|
1
|
-
const path = require('path');
|
|
2
|
-
const fs = require('fs');
|
|
3
|
-
const HtmlWebpackPlugin = require('html-webpack-plugin');
|
|
4
|
-
const Mustache = require('mustache');
|
|
5
|
-
const webpack = require('webpack');
|
|
6
|
-
const { BundleAnalyzerPlugin } = require('webpack-bundle-analyzer');
|
|
7
|
-
const TerserPlugin = require("terser-webpack-plugin");
|
|
8
|
-
|
|
9
|
-
const package_data = require("../../package.json")
|
|
10
|
-
const {base_url} = require("./env");
|
|
11
|
-
const {common_plugins} = require("./base.webpack.config");
|
|
12
|
-
|
|
13
|
-
/**
|
|
14
|
-
* dev 下 index.html 由 webpack-dev-server 直接吐给浏览器,不经过后端 Mustache.render,
|
|
15
|
-
* 模板里的 {{{web_site_title}}} 这类占位符会原样显示成 "dev 占位符"。
|
|
16
|
-
* 这里只在 dev 用同一个模板引擎渲染;production 保持原模板输出,
|
|
17
|
-
* 交给后端 get_index_html() 用真实环境配置渲染。
|
|
18
|
-
*/
|
|
19
|
-
const INDEX_TEMPLATE = path.join(__dirname, "..", "..", "src", "web", "project", 'index.html');
|
|
20
|
-
function render_index() {
|
|
21
|
-
const tpl = fs.readFileSync(INDEX_TEMPLATE, 'utf8');
|
|
22
|
-
return Mustache.render(tpl, {
|
|
23
|
-
Windows_FileCat: JSON.stringify({
|
|
24
|
-
base_url,
|
|
25
|
-
web_site_title: "Local FileCat",
|
|
26
|
-
logo_url: ""
|
|
27
|
-
}),
|
|
28
|
-
web_site_title: "Local FileCat",
|
|
29
|
-
logo_favicon: "favicon-32x32.png"
|
|
30
|
-
});
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
const is_dev = process.env.NODE_ENV !== 'production';
|
|
34
|
-
module.exports = {
|
|
35
|
-
mode: process.env.NODE_ENV === 'development' ? 'development' : 'production',
|
|
36
|
-
entry: path.join(__dirname, "..", "..", "src", "web", "project", 'index.js'),
|
|
37
|
-
output: {
|
|
38
|
-
// path: path.resolve(__dirname, '..','..','dist'),
|
|
39
|
-
// filename: 'bundle.js',
|
|
40
|
-
filename: '[name].[contenthash].js', // 使用 contenthash 进行文件名哈希 下次更新代码 浏览器缓存也会更新
|
|
41
|
-
path: path.resolve(__dirname, '..', "..", 'build', 'dist'),
|
|
42
|
-
},
|
|
43
|
-
module: {
|
|
44
|
-
rules: [
|
|
45
|
-
{
|
|
46
|
-
test: /\.(js|jsx|tsx|ts)$/,
|
|
47
|
-
exclude: /node_modules/,
|
|
48
|
-
use: {
|
|
49
|
-
loader: 'babel-loader',
|
|
50
|
-
options: {
|
|
51
|
-
configFile: path.resolve(__dirname, '.babelrc'), // 指定 .babelrc 文件路径
|
|
52
|
-
},
|
|
53
|
-
},
|
|
54
|
-
},
|
|
55
|
-
{
|
|
56
|
-
test: /\.css$/, // 匹配所有以.css结尾的文件
|
|
57
|
-
use: ['style-loader', 'css-loader'] // 使用style-loader和css-loader处理匹配到的文件
|
|
58
|
-
},
|
|
59
|
-
{
|
|
60
|
-
test: /\.svg/,
|
|
61
|
-
type: 'asset/inline'
|
|
62
|
-
},
|
|
63
|
-
{
|
|
64
|
-
// 数学公式(KaTeX)用的字体。webpack 5 默认不认识字体文件,
|
|
65
|
-
// 不加这条规则 import katex 的样式会直接报 Module parse failed。
|
|
66
|
-
// 输出到 dist 根目录(不带子目录):后端静态资源是按 basename 找文件的
|
|
67
|
-
// (见 main.ts 的 path.basename),放子目录里反而取不到。
|
|
68
|
-
test: /\.(woff2?|ttf|otf|eot)$/,
|
|
69
|
-
type: 'asset/resource',
|
|
70
|
-
generator: {
|
|
71
|
-
filename: '[name].[contenthash][ext]',
|
|
72
|
-
},
|
|
73
|
-
},
|
|
74
|
-
{
|
|
75
|
-
test: /workflow.yml/,
|
|
76
|
-
type: 'asset/source', // 直接把文件内容导出为字符串
|
|
77
|
-
},
|
|
78
|
-
{
|
|
79
|
-
test: /\.m?js/,
|
|
80
|
-
resolve: {
|
|
81
|
-
fullySpecified: false, // 关闭对文件扩展名的严格要求
|
|
82
|
-
},
|
|
83
|
-
},
|
|
84
|
-
],
|
|
85
|
-
},
|
|
86
|
-
resolve: {
|
|
87
|
-
// .mjs 不能省:mermaid 等包的 exports 直接指向 .mjs 产物,
|
|
88
|
-
// webpack 按这份扩展名列表去找入口,缺了就会报 Can't resolve
|
|
89
|
-
extensions: ['.tsx', '.ts', '.js', '.jsx', '.mjs'],
|
|
90
|
-
},
|
|
91
|
-
plugins: [
|
|
92
|
-
new HtmlWebpackPlugin({
|
|
93
|
-
template: INDEX_TEMPLATE,
|
|
94
|
-
// dev 才预先渲染占位符;production 保持原样,交给后端 Mustache.render
|
|
95
|
-
...(is_dev ? { templateContent: render_index() } : {}),
|
|
96
|
-
inject: true,
|
|
97
|
-
}),
|
|
98
|
-
new webpack.DefinePlugin(common_plugins),
|
|
99
|
-
// new BundleAnalyzerPlugin({
|
|
100
|
-
// analyzerMode: 'server', // 启动本地服务器查看分析报告
|
|
101
|
-
// openAnalyzer: true, // 是否自动打开浏览器
|
|
102
|
-
// })
|
|
103
|
-
],
|
|
104
|
-
optimization: {
|
|
105
|
-
minimize: true, // 压缩Js代码
|
|
106
|
-
minimizer: [
|
|
107
|
-
new TerserPlugin({
|
|
108
|
-
// extractComments: true,//不将注释提取到单独的文件中
|
|
109
|
-
}),
|
|
110
|
-
],
|
|
111
|
-
// splitChunks: {
|
|
112
|
-
// chunks: 'all', // 对所有 chunk 进行优化
|
|
113
|
-
// maxInitialRequests: Infinity,
|
|
114
|
-
// minSize: 20000, // 超过 20kb 的模块进行拆分
|
|
115
|
-
// cacheGroups: {
|
|
116
|
-
// // 将所有 node_modules 中的库打包为一个 vendors 文件
|
|
117
|
-
// vendors: {
|
|
118
|
-
// test: /[\\/]node_modules[\\/]/,
|
|
119
|
-
// name(module) {
|
|
120
|
-
// // 获取包名,将第三方库按包名拆分,防止 vendors.js 过大
|
|
121
|
-
// const packageName = module.context.match(/[\\/]node_modules[\\/](.*?)([\\/]|$)/)[1];
|
|
122
|
-
// return `npm.${packageName.replace('@', '')}`;
|
|
123
|
-
// },
|
|
124
|
-
// },
|
|
125
|
-
// },
|
|
126
|
-
// },
|
|
127
|
-
},
|
|
128
|
-
devServer: {
|
|
129
|
-
static: [
|
|
130
|
-
// {directory: path.join(__dirname, "..", "..", "node_modules", "@excalidraw", "excalidraw", "dist","excalidraw-assets-dev"),},
|
|
131
|
-
{
|
|
132
|
-
directory: path.join(__dirname, "..", "..", "node_modules", "@excalidraw", "excalidraw", "dist", "dev", "fonts"),
|
|
133
|
-
publicPath: "/fonts" // 重点:将 URL 中的 /fonts 映射到上述物理文件夹 多个路径可以一样 按优先级查找
|
|
134
|
-
},
|
|
135
|
-
{directory: path.join(__dirname, "..", "..", "src", "web", "project", './'),},// web index.js
|
|
136
|
-
{directory: path.join(__dirname, "..", "..", "src", "web", "project", 'component', "file", "component", "image", "js")},
|
|
137
|
-
{directory: path.join(__dirname, "..", "..", "src", "web", "project", 'component', "proxy", "rdp", "client", "js")},
|
|
138
|
-
{directory: path.join(__dirname, "..", "..", "src", "web", "meta", 'resources', "img", "./",)},
|
|
139
|
-
{directory: path.join(__dirname, "..", "..", "src", "web", "meta", 'resources', "css", "themes",)}
|
|
140
|
-
],
|
|
141
|
-
port: 3301,
|
|
142
|
-
open: false,
|
|
143
|
-
// onListening: function (devServer) {
|
|
144
|
-
// if (!devServer) {
|
|
145
|
-
// throw new Error('webpack-dev-server is not defined');
|
|
146
|
-
// }
|
|
147
|
-
// // const port = devServer.server.address().port;
|
|
148
|
-
// console.log('Listening on port:', port);
|
|
149
|
-
// },
|
|
150
|
-
allowedHosts: "all", // 新增该配置项
|
|
151
|
-
},
|
|
152
|
-
};
|
|
1
|
+
const path = require('path');
|
|
2
|
+
const fs = require('fs');
|
|
3
|
+
const HtmlWebpackPlugin = require('html-webpack-plugin');
|
|
4
|
+
const Mustache = require('mustache');
|
|
5
|
+
const webpack = require('webpack');
|
|
6
|
+
const { BundleAnalyzerPlugin } = require('webpack-bundle-analyzer');
|
|
7
|
+
const TerserPlugin = require("terser-webpack-plugin");
|
|
8
|
+
|
|
9
|
+
const package_data = require("../../package.json")
|
|
10
|
+
const {base_url} = require("./env");
|
|
11
|
+
const {common_plugins} = require("./base.webpack.config");
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* dev 下 index.html 由 webpack-dev-server 直接吐给浏览器,不经过后端 Mustache.render,
|
|
15
|
+
* 模板里的 {{{web_site_title}}} 这类占位符会原样显示成 "dev 占位符"。
|
|
16
|
+
* 这里只在 dev 用同一个模板引擎渲染;production 保持原模板输出,
|
|
17
|
+
* 交给后端 get_index_html() 用真实环境配置渲染。
|
|
18
|
+
*/
|
|
19
|
+
const INDEX_TEMPLATE = path.join(__dirname, "..", "..", "src", "web", "project", 'index.html');
|
|
20
|
+
function render_index() {
|
|
21
|
+
const tpl = fs.readFileSync(INDEX_TEMPLATE, 'utf8');
|
|
22
|
+
return Mustache.render(tpl, {
|
|
23
|
+
Windows_FileCat: JSON.stringify({
|
|
24
|
+
base_url,
|
|
25
|
+
web_site_title: "Local FileCat",
|
|
26
|
+
logo_url: ""
|
|
27
|
+
}),
|
|
28
|
+
web_site_title: "Local FileCat",
|
|
29
|
+
logo_favicon: "favicon-32x32.png"
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
const is_dev = process.env.NODE_ENV !== 'production';
|
|
34
|
+
module.exports = {
|
|
35
|
+
mode: process.env.NODE_ENV === 'development' ? 'development' : 'production',
|
|
36
|
+
entry: path.join(__dirname, "..", "..", "src", "web", "project", 'index.js'),
|
|
37
|
+
output: {
|
|
38
|
+
// path: path.resolve(__dirname, '..','..','dist'),
|
|
39
|
+
// filename: 'bundle.js',
|
|
40
|
+
filename: '[name].[contenthash].js', // 使用 contenthash 进行文件名哈希 下次更新代码 浏览器缓存也会更新
|
|
41
|
+
path: path.resolve(__dirname, '..', "..", 'build', 'dist'),
|
|
42
|
+
},
|
|
43
|
+
module: {
|
|
44
|
+
rules: [
|
|
45
|
+
{
|
|
46
|
+
test: /\.(js|jsx|tsx|ts)$/,
|
|
47
|
+
exclude: /node_modules/,
|
|
48
|
+
use: {
|
|
49
|
+
loader: 'babel-loader',
|
|
50
|
+
options: {
|
|
51
|
+
configFile: path.resolve(__dirname, '.babelrc'), // 指定 .babelrc 文件路径
|
|
52
|
+
},
|
|
53
|
+
},
|
|
54
|
+
},
|
|
55
|
+
{
|
|
56
|
+
test: /\.css$/, // 匹配所有以.css结尾的文件
|
|
57
|
+
use: ['style-loader', 'css-loader'] // 使用style-loader和css-loader处理匹配到的文件
|
|
58
|
+
},
|
|
59
|
+
{
|
|
60
|
+
test: /\.svg/,
|
|
61
|
+
type: 'asset/inline'
|
|
62
|
+
},
|
|
63
|
+
{
|
|
64
|
+
// 数学公式(KaTeX)用的字体。webpack 5 默认不认识字体文件,
|
|
65
|
+
// 不加这条规则 import katex 的样式会直接报 Module parse failed。
|
|
66
|
+
// 输出到 dist 根目录(不带子目录):后端静态资源是按 basename 找文件的
|
|
67
|
+
// (见 main.ts 的 path.basename),放子目录里反而取不到。
|
|
68
|
+
test: /\.(woff2?|ttf|otf|eot)$/,
|
|
69
|
+
type: 'asset/resource',
|
|
70
|
+
generator: {
|
|
71
|
+
filename: '[name].[contenthash][ext]',
|
|
72
|
+
},
|
|
73
|
+
},
|
|
74
|
+
{
|
|
75
|
+
test: /workflow.yml/,
|
|
76
|
+
type: 'asset/source', // 直接把文件内容导出为字符串
|
|
77
|
+
},
|
|
78
|
+
{
|
|
79
|
+
test: /\.m?js/,
|
|
80
|
+
resolve: {
|
|
81
|
+
fullySpecified: false, // 关闭对文件扩展名的严格要求
|
|
82
|
+
},
|
|
83
|
+
},
|
|
84
|
+
],
|
|
85
|
+
},
|
|
86
|
+
resolve: {
|
|
87
|
+
// .mjs 不能省:mermaid 等包的 exports 直接指向 .mjs 产物,
|
|
88
|
+
// webpack 按这份扩展名列表去找入口,缺了就会报 Can't resolve
|
|
89
|
+
extensions: ['.tsx', '.ts', '.js', '.jsx', '.mjs'],
|
|
90
|
+
},
|
|
91
|
+
plugins: [
|
|
92
|
+
new HtmlWebpackPlugin({
|
|
93
|
+
template: INDEX_TEMPLATE,
|
|
94
|
+
// dev 才预先渲染占位符;production 保持原样,交给后端 Mustache.render
|
|
95
|
+
...(is_dev ? { templateContent: render_index() } : {}),
|
|
96
|
+
inject: true,
|
|
97
|
+
}),
|
|
98
|
+
new webpack.DefinePlugin(common_plugins),
|
|
99
|
+
// new BundleAnalyzerPlugin({
|
|
100
|
+
// analyzerMode: 'server', // 启动本地服务器查看分析报告
|
|
101
|
+
// openAnalyzer: true, // 是否自动打开浏览器
|
|
102
|
+
// })
|
|
103
|
+
],
|
|
104
|
+
optimization: {
|
|
105
|
+
minimize: true, // 压缩Js代码
|
|
106
|
+
minimizer: [
|
|
107
|
+
new TerserPlugin({
|
|
108
|
+
// extractComments: true,//不将注释提取到单独的文件中
|
|
109
|
+
}),
|
|
110
|
+
],
|
|
111
|
+
// splitChunks: {
|
|
112
|
+
// chunks: 'all', // 对所有 chunk 进行优化
|
|
113
|
+
// maxInitialRequests: Infinity,
|
|
114
|
+
// minSize: 20000, // 超过 20kb 的模块进行拆分
|
|
115
|
+
// cacheGroups: {
|
|
116
|
+
// // 将所有 node_modules 中的库打包为一个 vendors 文件
|
|
117
|
+
// vendors: {
|
|
118
|
+
// test: /[\\/]node_modules[\\/]/,
|
|
119
|
+
// name(module) {
|
|
120
|
+
// // 获取包名,将第三方库按包名拆分,防止 vendors.js 过大
|
|
121
|
+
// const packageName = module.context.match(/[\\/]node_modules[\\/](.*?)([\\/]|$)/)[1];
|
|
122
|
+
// return `npm.${packageName.replace('@', '')}`;
|
|
123
|
+
// },
|
|
124
|
+
// },
|
|
125
|
+
// },
|
|
126
|
+
// },
|
|
127
|
+
},
|
|
128
|
+
devServer: {
|
|
129
|
+
static: [
|
|
130
|
+
// {directory: path.join(__dirname, "..", "..", "node_modules", "@excalidraw", "excalidraw", "dist","excalidraw-assets-dev"),},
|
|
131
|
+
{
|
|
132
|
+
directory: path.join(__dirname, "..", "..", "node_modules", "@excalidraw", "excalidraw", "dist", "dev", "fonts"),
|
|
133
|
+
publicPath: "/fonts" // 重点:将 URL 中的 /fonts 映射到上述物理文件夹 多个路径可以一样 按优先级查找
|
|
134
|
+
},
|
|
135
|
+
{directory: path.join(__dirname, "..", "..", "src", "web", "project", './'),},// web index.js
|
|
136
|
+
{directory: path.join(__dirname, "..", "..", "src", "web", "project", 'component', "file", "component", "image", "js")},
|
|
137
|
+
{directory: path.join(__dirname, "..", "..", "src", "web", "project", 'component', "proxy", "rdp", "client", "js")},
|
|
138
|
+
{directory: path.join(__dirname, "..", "..", "src", "web", "meta", 'resources', "img", "./",)},
|
|
139
|
+
{directory: path.join(__dirname, "..", "..", "src", "web", "meta", 'resources', "css", "themes",)}
|
|
140
|
+
],
|
|
141
|
+
port: 3301,
|
|
142
|
+
open: false,
|
|
143
|
+
// onListening: function (devServer) {
|
|
144
|
+
// if (!devServer) {
|
|
145
|
+
// throw new Error('webpack-dev-server is not defined');
|
|
146
|
+
// }
|
|
147
|
+
// // const port = devServer.server.address().port;
|
|
148
|
+
// console.log('Listening on port:', port);
|
|
149
|
+
// },
|
|
150
|
+
allowedHosts: "all", // 新增该配置项
|
|
151
|
+
},
|
|
152
|
+
};
|
package/shell/dev.js
CHANGED
|
@@ -1,51 +1,51 @@
|
|
|
1
|
-
|
|
2
|
-
const { spawn } = require('child_process');
|
|
3
|
-
const path = require("path");
|
|
4
|
-
const Webpack = require('webpack');
|
|
5
|
-
const WebpackDevServer = require('webpack-dev-server');
|
|
6
|
-
const webpackConfig = require('./config/webpack.web.config.js');
|
|
7
|
-
const {find_available_port} = require("../src/common/node/findPort");
|
|
8
|
-
|
|
9
|
-
// const temLog = console.log;
|
|
10
|
-
|
|
11
|
-
// const child = spawn('npm', ['run', 'server-dev'], {
|
|
12
|
-
// shell: true, // 在某些系统上可能需要设置 shell 为 true 以正确执行命令
|
|
13
|
-
// stdio: 'inherit', // 使子进程的输入、输出和错误流与父进程共享
|
|
14
|
-
// });
|
|
15
|
-
|
|
16
|
-
// child.stdout.on('data', (data) => {
|
|
17
|
-
//
|
|
18
|
-
// console.log(data.toString());
|
|
19
|
-
// })
|
|
20
|
-
// child.stderr.on('data', (data) => {
|
|
21
|
-
// console.log = temLog;
|
|
22
|
-
// console.error(data.toString());
|
|
23
|
-
// });
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
const runServer = async () => {
|
|
27
|
-
const port = await find_available_port(49152, 65535);
|
|
28
|
-
process.env.webpack_port = port;
|
|
29
|
-
webpackConfig['mode'] = 'development';
|
|
30
|
-
webpackConfig['devServer']['port'] = port;
|
|
31
|
-
webpackConfig['devServer']['onListening'] = function (devServer) {
|
|
32
|
-
if (!devServer) {
|
|
33
|
-
throw new Error('webpack-dev-server is not defined');
|
|
34
|
-
}
|
|
35
|
-
console.log('\x1b[31m请用后端端口访问网页\x1b[0m');
|
|
36
|
-
};
|
|
37
|
-
const compiler = Webpack(webpackConfig);
|
|
38
|
-
|
|
39
|
-
// webpackConfig['mode'] = 'production';
|
|
40
|
-
const devServerOptions = { ...webpackConfig.devServer, open: false };
|
|
41
|
-
const server = new WebpackDevServer(devServerOptions, compiler);
|
|
42
|
-
server.start();
|
|
43
|
-
require("../src/main/server")
|
|
44
|
-
};
|
|
45
|
-
|
|
46
|
-
runServer();
|
|
47
|
-
// console.log = function (...args) {
|
|
48
|
-
// }
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
1
|
+
|
|
2
|
+
const { spawn } = require('child_process');
|
|
3
|
+
const path = require("path");
|
|
4
|
+
const Webpack = require('webpack');
|
|
5
|
+
const WebpackDevServer = require('webpack-dev-server');
|
|
6
|
+
const webpackConfig = require('./config/webpack.web.config.js');
|
|
7
|
+
const {find_available_port} = require("../src/common/node/findPort");
|
|
8
|
+
|
|
9
|
+
// const temLog = console.log;
|
|
10
|
+
|
|
11
|
+
// const child = spawn('npm', ['run', 'server-dev'], {
|
|
12
|
+
// shell: true, // 在某些系统上可能需要设置 shell 为 true 以正确执行命令
|
|
13
|
+
// stdio: 'inherit', // 使子进程的输入、输出和错误流与父进程共享
|
|
14
|
+
// });
|
|
15
|
+
|
|
16
|
+
// child.stdout.on('data', (data) => {
|
|
17
|
+
//
|
|
18
|
+
// console.log(data.toString());
|
|
19
|
+
// })
|
|
20
|
+
// child.stderr.on('data', (data) => {
|
|
21
|
+
// console.log = temLog;
|
|
22
|
+
// console.error(data.toString());
|
|
23
|
+
// });
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
const runServer = async () => {
|
|
27
|
+
const port = await find_available_port(49152, 65535);
|
|
28
|
+
process.env.webpack_port = port;
|
|
29
|
+
webpackConfig['mode'] = 'development';
|
|
30
|
+
webpackConfig['devServer']['port'] = port;
|
|
31
|
+
webpackConfig['devServer']['onListening'] = function (devServer) {
|
|
32
|
+
if (!devServer) {
|
|
33
|
+
throw new Error('webpack-dev-server is not defined');
|
|
34
|
+
}
|
|
35
|
+
console.log('\x1b[31m请用后端端口访问网页\x1b[0m');
|
|
36
|
+
};
|
|
37
|
+
const compiler = Webpack(webpackConfig);
|
|
38
|
+
|
|
39
|
+
// webpackConfig['mode'] = 'production';
|
|
40
|
+
const devServerOptions = { ...webpackConfig.devServer, open: false };
|
|
41
|
+
const server = new WebpackDevServer(devServerOptions, compiler);
|
|
42
|
+
server.start();
|
|
43
|
+
require("../src/main/server")
|
|
44
|
+
};
|
|
45
|
+
|
|
46
|
+
runServer();
|
|
47
|
+
// console.log = function (...args) {
|
|
48
|
+
// }
|
|
49
|
+
|
|
50
|
+
|
|
51
|
+
|
package/shell/docker-build.sh
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
|
|
2
|
-
npm run docker-build
|
|
1
|
+
|
|
2
|
+
npm run docker-build
|
|
3
3
|
docker build -t test .
|
package/shell/filecat
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
1
|
+
#!/usr/bin/env node
|
|
2
2
|
require("../build/main.js");
|
package/shell/filecat-watch
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
1
|
+
#!/usr/bin/env node
|
|
2
2
|
require("../build/watch.js");
|