jtui3.0 1.2.2 → 1.2.4
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/package.json +8 -1
- package/readme.md +43 -6
- package/scripts/check-deps.js +79 -0
- package/scripts/install-peer-deps.js +139 -0
- package/scripts/postinstall.js +45 -0
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "jtui3.0",
|
|
3
|
-
"version": "1.2.
|
|
3
|
+
"version": "1.2.4",
|
|
4
4
|
"private": false,
|
|
5
5
|
"scripts": {
|
|
6
6
|
"serve": "vue-cli-service serve",
|
|
@@ -14,6 +14,12 @@
|
|
|
14
14
|
"postinstall": "node scripts/postinstall.js"
|
|
15
15
|
},
|
|
16
16
|
"description": "jt Components",
|
|
17
|
+
"engines": {
|
|
18
|
+
"node": ">=14.0.0",
|
|
19
|
+
"npm": ">=6.0.0",
|
|
20
|
+
"yarn": ">=1.0.0",
|
|
21
|
+
"pnpm": ">=6.0.0"
|
|
22
|
+
},
|
|
17
23
|
"homepage": "http://gitlab.cdjti.com/lww/jtui3.0",
|
|
18
24
|
"license": "MIT",
|
|
19
25
|
"bugs": {
|
|
@@ -102,6 +108,7 @@
|
|
|
102
108
|
"main": "lib/jtui3.0.umd.min.js",
|
|
103
109
|
"files": [
|
|
104
110
|
"lib/",
|
|
111
|
+
"scripts/",
|
|
105
112
|
"package.json",
|
|
106
113
|
"README.md"
|
|
107
114
|
],
|
package/readme.md
CHANGED
|
@@ -1,24 +1,61 @@
|
|
|
1
1
|
# jtui3.0
|
|
2
2
|
|
|
3
|
-
##
|
|
3
|
+
## 安装
|
|
4
|
+
|
|
5
|
+
### npm
|
|
6
|
+
```bash
|
|
7
|
+
npm install jtui3.0
|
|
8
|
+
```
|
|
9
|
+
|
|
10
|
+
### yarn
|
|
11
|
+
```bash
|
|
12
|
+
yarn add jtui3.0
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
### pnpm
|
|
16
|
+
```bash
|
|
17
|
+
pnpm add jtui3.0
|
|
18
|
+
# 如果自动安装失败,请运行:
|
|
19
|
+
# pnpm add jtui3.0 --save-peer-deps
|
|
20
|
+
# 或手动安装所需的peerDependencies
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
## 自动安装peerDependencies
|
|
24
|
+
|
|
25
|
+
本库会自动尝试安装所需的peerDependencies。如果自动安装失败,请手动安装以下依赖:
|
|
26
|
+
|
|
27
|
+
```bash
|
|
28
|
+
# 使用npm
|
|
29
|
+
npm install element-plus@^2.10.2 vue@^3.2.13 axios@^1.7.9 dayjs@^1.11.5 echarts@^5.4.0
|
|
30
|
+
|
|
31
|
+
# 使用yarn
|
|
32
|
+
yarn add element-plus@^2.10.2 vue@^3.2.13 axios@^1.7.9 dayjs@^1.11.5 echarts@^5.4.0
|
|
33
|
+
|
|
34
|
+
# 使用pnpm
|
|
35
|
+
pnpm add element-plus@^2.10.2 vue@^3.2.13 axios@^1.7.9 dayjs@^1.11.5 echarts@^5.4.0
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
## 开发
|
|
39
|
+
|
|
40
|
+
### 项目设置
|
|
4
41
|
```
|
|
5
42
|
yarn install
|
|
6
43
|
```
|
|
7
44
|
|
|
8
|
-
###
|
|
45
|
+
### 开发环境热重载
|
|
9
46
|
```
|
|
10
47
|
yarn serve
|
|
11
48
|
```
|
|
12
49
|
|
|
13
|
-
###
|
|
50
|
+
### 生产环境构建
|
|
14
51
|
```
|
|
15
52
|
yarn build
|
|
16
53
|
```
|
|
17
54
|
|
|
18
|
-
###
|
|
55
|
+
### 代码检查
|
|
19
56
|
```
|
|
20
57
|
yarn lint
|
|
21
58
|
```
|
|
22
59
|
|
|
23
|
-
###
|
|
24
|
-
|
|
60
|
+
### 自定义配置
|
|
61
|
+
参考 [Vue CLI 配置文档](https://cli.vuejs.org/config/).
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
|
|
3
|
+
const fs = require('fs');
|
|
4
|
+
const path = require('path');
|
|
5
|
+
|
|
6
|
+
// 读取package.json中的peerDependencies
|
|
7
|
+
function getPeerDependencies() {
|
|
8
|
+
try {
|
|
9
|
+
const packageJsonPath = path.join(process.cwd(), 'package.json');
|
|
10
|
+
const packageJson = JSON.parse(fs.readFileSync(packageJsonPath, 'utf8'));
|
|
11
|
+
return packageJson.peerDependencies || {};
|
|
12
|
+
} catch (error) {
|
|
13
|
+
console.error('读取package.json时出错:', error.message);
|
|
14
|
+
return {};
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
// 检查是否已安装依赖
|
|
19
|
+
function isDependencyInstalled(depName) {
|
|
20
|
+
try {
|
|
21
|
+
const packageJsonPath = path.join(process.cwd(), 'package.json');
|
|
22
|
+
const packageJson = JSON.parse(fs.readFileSync(packageJsonPath, 'utf8'));
|
|
23
|
+
|
|
24
|
+
// 检查dependencies和devDependencies
|
|
25
|
+
return (packageJson.dependencies && packageJson.dependencies[depName]) ||
|
|
26
|
+
(packageJson.devDependencies && packageJson.devDependencies[depName]);
|
|
27
|
+
} catch (error) {
|
|
28
|
+
return false;
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
// 主函数
|
|
33
|
+
function main() {
|
|
34
|
+
console.log('🔍 检查peerDependencies安装状态...\n');
|
|
35
|
+
|
|
36
|
+
const peerDeps = getPeerDependencies();
|
|
37
|
+
|
|
38
|
+
if (Object.keys(peerDeps).length === 0) {
|
|
39
|
+
console.log('📋 没有配置peerDependencies');
|
|
40
|
+
return;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
console.log(`📋 找到 ${Object.keys(peerDeps).length} 个peerDependencies:`);
|
|
44
|
+
|
|
45
|
+
let missingCount = 0;
|
|
46
|
+
Object.entries(peerDeps).forEach(([dep, version]) => {
|
|
47
|
+
const installed = isDependencyInstalled(dep);
|
|
48
|
+
const status = installed ? '✅ 已安装' : '❌ 未安装';
|
|
49
|
+
console.log(` ${status} ${dep}: ${version}`);
|
|
50
|
+
|
|
51
|
+
if (!installed) {
|
|
52
|
+
missingCount++;
|
|
53
|
+
}
|
|
54
|
+
});
|
|
55
|
+
|
|
56
|
+
console.log('\n📊 检查结果:');
|
|
57
|
+
console.log(` ✅ 已安装: ${Object.keys(peerDeps).length - missingCount}`);
|
|
58
|
+
console.log(` ❌ 未安装: ${missingCount}`);
|
|
59
|
+
|
|
60
|
+
if (missingCount > 0) {
|
|
61
|
+
console.log('\n💡 建议运行以下命令安装缺失的依赖:');
|
|
62
|
+
console.log(' yarn install:peer # 使用yarn');
|
|
63
|
+
console.log(' npm run install:peer # 使用npm');
|
|
64
|
+
process.exit(1);
|
|
65
|
+
} else {
|
|
66
|
+
console.log('\n🎉 所有peerDependencies都已安装!');
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
// 如果直接运行此脚本
|
|
71
|
+
if (require.main === module) {
|
|
72
|
+
main();
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
module.exports = {
|
|
76
|
+
getPeerDependencies,
|
|
77
|
+
isDependencyInstalled,
|
|
78
|
+
main
|
|
79
|
+
};
|
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
|
|
3
|
+
const fs = require('fs');
|
|
4
|
+
const path = require('path');
|
|
5
|
+
const { execSync } = require('child_process');
|
|
6
|
+
|
|
7
|
+
// 获取包管理器类型
|
|
8
|
+
function getPackageManager() {
|
|
9
|
+
try {
|
|
10
|
+
// 检查是否有yarn.lock文件
|
|
11
|
+
if (fs.existsSync(path.join(process.cwd(), 'yarn.lock'))) {
|
|
12
|
+
return 'yarn';
|
|
13
|
+
}
|
|
14
|
+
// 检查是否有package-lock.json文件
|
|
15
|
+
if (fs.existsSync(path.join(process.cwd(), 'package-lock.json'))) {
|
|
16
|
+
return 'npm';
|
|
17
|
+
}
|
|
18
|
+
// 默认使用npm
|
|
19
|
+
return 'npm';
|
|
20
|
+
} catch (error) {
|
|
21
|
+
console.error('检测包管理器时出错:', error.message);
|
|
22
|
+
return 'npm';
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
// 读取package.json中的peerDependencies
|
|
27
|
+
function getPeerDependencies() {
|
|
28
|
+
try {
|
|
29
|
+
const packageJsonPath = path.join(process.cwd(), 'package.json');
|
|
30
|
+
const packageJson = JSON.parse(fs.readFileSync(packageJsonPath, 'utf8'));
|
|
31
|
+
return packageJson.peerDependencies || {};
|
|
32
|
+
} catch (error) {
|
|
33
|
+
console.error('读取package.json时出错:', error.message);
|
|
34
|
+
return {};
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
// 检查是否已安装依赖
|
|
39
|
+
function isDependencyInstalled(depName) {
|
|
40
|
+
try {
|
|
41
|
+
const packageJsonPath = path.join(process.cwd(), 'package.json');
|
|
42
|
+
const packageJson = JSON.parse(fs.readFileSync(packageJsonPath, 'utf8'));
|
|
43
|
+
|
|
44
|
+
// 检查dependencies和devDependencies
|
|
45
|
+
return (packageJson.dependencies && packageJson.dependencies[depName]) ||
|
|
46
|
+
(packageJson.devDependencies && packageJson.devDependencies[depName]);
|
|
47
|
+
} catch (error) {
|
|
48
|
+
return false;
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
// 安装依赖
|
|
53
|
+
function installDependencies(dependencies, packageManager) {
|
|
54
|
+
if (Object.keys(dependencies).length === 0) {
|
|
55
|
+
console.log('✅ 没有需要安装的peerDependencies');
|
|
56
|
+
return;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
const depsToInstall = [];
|
|
60
|
+
|
|
61
|
+
// 筛选出未安装的依赖
|
|
62
|
+
for (const [depName, version] of Object.entries(dependencies)) {
|
|
63
|
+
if (!isDependencyInstalled(depName)) {
|
|
64
|
+
depsToInstall.push(`${depName}@${version}`);
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
if (depsToInstall.length === 0) {
|
|
69
|
+
console.log('✅ 所有peerDependencies已安装');
|
|
70
|
+
return;
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
console.log(`📦 需要安装的peerDependencies: ${depsToInstall.length}个`);
|
|
74
|
+
|
|
75
|
+
try {
|
|
76
|
+
let installCommand;
|
|
77
|
+
if (packageManager === 'yarn') {
|
|
78
|
+
installCommand = `yarn add ${depsToInstall.join(' ')} --dev`;
|
|
79
|
+
} else {
|
|
80
|
+
installCommand = `npm install ${depsToInstall.join(' ')} --save-dev`;
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
console.log(`🔧 使用 ${packageManager} 安装依赖...`);
|
|
84
|
+
execSync(installCommand, { stdio: 'inherit' });
|
|
85
|
+
|
|
86
|
+
console.log('✅ peerDependencies安装完成');
|
|
87
|
+
} catch (error) {
|
|
88
|
+
console.error('❌ 安装依赖时出错:', error.message);
|
|
89
|
+
console.log('💡 请手动安装以下依赖:');
|
|
90
|
+
depsToInstall.forEach(dep => console.log(` ${dep}`));
|
|
91
|
+
process.exit(1);
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
// 主函数
|
|
96
|
+
function main() {
|
|
97
|
+
// 检查环境变量,避免在CI环境中运行
|
|
98
|
+
if (process.env.CI || process.env.NODE_ENV === 'production') {
|
|
99
|
+
console.log('🚫 CI环境或生产环境,跳过peerDependencies安装');
|
|
100
|
+
return;
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
// 检查是否明确禁用安装
|
|
104
|
+
if (process.env.INSTALL_PEER_DEPS === 'false') {
|
|
105
|
+
console.log('🚫 已禁用peerDependencies安装');
|
|
106
|
+
return;
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
console.log('🔍 开始检查peerDependencies...');
|
|
110
|
+
|
|
111
|
+
const packageManager = getPackageManager();
|
|
112
|
+
console.log(`📦 检测到包管理器: ${packageManager}`);
|
|
113
|
+
|
|
114
|
+
const peerDeps = getPeerDependencies();
|
|
115
|
+
console.log(`📋 找到 ${Object.keys(peerDeps).length} 个peerDependencies`);
|
|
116
|
+
|
|
117
|
+
if (Object.keys(peerDeps).length > 0) {
|
|
118
|
+
console.log('📋 peerDependencies列表:');
|
|
119
|
+
Object.entries(peerDeps).forEach(([dep, version]) => {
|
|
120
|
+
const installed = isDependencyInstalled(dep) ? '✅' : '❌';
|
|
121
|
+
console.log(` ${installed} ${dep}: ${version}`);
|
|
122
|
+
});
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
installDependencies(peerDeps, packageManager);
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
// 如果直接运行此脚本
|
|
129
|
+
if (require.main === module) {
|
|
130
|
+
main();
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
module.exports = {
|
|
134
|
+
getPackageManager,
|
|
135
|
+
getPeerDependencies,
|
|
136
|
+
isDependencyInstalled,
|
|
137
|
+
installDependencies,
|
|
138
|
+
main
|
|
139
|
+
};
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
|
|
3
|
+
// postinstall脚本,用于在npm/yarn install后自动运行
|
|
4
|
+
const path = require('path');
|
|
5
|
+
const fs = require('fs');
|
|
6
|
+
|
|
7
|
+
// 尝试加载安装脚本
|
|
8
|
+
function loadInstallScript() {
|
|
9
|
+
try {
|
|
10
|
+
// 尝试从当前目录加载
|
|
11
|
+
const scriptPath = path.join(__dirname, 'install-peer-deps.js');
|
|
12
|
+
if (fs.existsSync(scriptPath)) {
|
|
13
|
+
return require(scriptPath);
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
// 尝试从上级目录加载(针对pnpm情况)
|
|
17
|
+
const parentScriptPath = path.join(__dirname, '..', 'scripts', 'install-peer-deps.js');
|
|
18
|
+
if (fs.existsSync(parentScriptPath)) {
|
|
19
|
+
return require(parentScriptPath);
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
console.log('❌ 无法找到install-peer-deps.js脚本');
|
|
23
|
+
return null;
|
|
24
|
+
} catch (error) {
|
|
25
|
+
console.log('❌ 加载安装脚本时出错:', error.message);
|
|
26
|
+
return null;
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
// 只有在开发环境或明确启用时才运行
|
|
31
|
+
if (process.env.NODE_ENV !== 'production' && process.env.INSTALL_PEER_DEPS !== 'false') {
|
|
32
|
+
console.log('🚀 jtui3.0: 运行postinstall脚本...');
|
|
33
|
+
|
|
34
|
+
const installModule = loadInstallScript();
|
|
35
|
+
if (installModule && installModule.main) {
|
|
36
|
+
installModule.main();
|
|
37
|
+
} else {
|
|
38
|
+
console.log('💡 jtui3.0: 建议手动安装peerDependencies:');
|
|
39
|
+
console.log(' npm install jtui3.0 --save-peer-deps');
|
|
40
|
+
console.log(' 或手动安装以下依赖:');
|
|
41
|
+
console.log(' element-plus@^2.10.2, vue@^3.2.13, axios@^1.7.9 等');
|
|
42
|
+
}
|
|
43
|
+
} else {
|
|
44
|
+
console.log('🚫 jtui3.0: 跳过postinstall脚本执行');
|
|
45
|
+
}
|