jtui3.0 1.2.1 → 1.2.3

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 CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "jtui3.0",
3
- "version": "1.2.1",
3
+ "version": "1.2.3",
4
4
  "private": false,
5
5
  "scripts": {
6
6
  "serve": "vue-cli-service serve",
@@ -8,7 +8,10 @@
8
8
  "clean": "rimraf lib",
9
9
  "lint": "vue-cli-service lint",
10
10
  "lib": "vue-cli-service build --target lib --name jtui3.0 --dest lib packages/index.js",
11
- "analyze": "vue-cli-service build --target lib --name jtui3.0 --dest lib packages/index.js --report"
11
+ "analyze": "vue-cli-service build --target lib --name jtui3.0 --dest lib packages/index.js --report",
12
+ "install:peer": "node scripts/install-peer-deps.js",
13
+ "check:deps": "node scripts/check-deps.js",
14
+ "postinstall": "node scripts/postinstall.js"
12
15
  },
13
16
  "description": "jt Components",
14
17
  "homepage": "http://gitlab.cdjti.com/lww/jtui3.0",
@@ -99,6 +102,7 @@
99
102
  "main": "lib/jtui3.0.umd.min.js",
100
103
  "files": [
101
104
  "lib/",
105
+ "scripts/",
102
106
  "package.json",
103
107
  "README.md"
104
108
  ],
@@ -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,12 @@
1
+ #!/usr/bin/env node
2
+
3
+ // postinstall脚本,用于在npm/yarn install后自动运行
4
+ const { main } = require('./install-peer-deps');
5
+
6
+ // 只有在开发环境或明确启用时才运行
7
+ if (process.env.NODE_ENV !== 'production' && process.env.INSTALL_PEER_DEPS !== 'false') {
8
+ console.log('🚀 运行postinstall脚本...');
9
+ main();
10
+ } else {
11
+ console.log('🚫 跳过postinstall脚本执行');
12
+ }