@mschauer5/spfx-toolkit 1.0.24 → 1.0.26
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/.nvmrc +1 -0
- package/lib/commands/index.js +3 -1
- package/lib/commands/index.js.map +1 -1
- package/lib/commands/installer.command.js +76 -60
- package/lib/commands/installer.command.js.map +1 -1
- package/lib/commands/repo.command.js +225 -0
- package/lib/commands/repo.command.js.map +1 -0
- package/lib/commands/scripts.command.js.map +1 -1
- package/lib/common/logger.js +7 -2
- package/lib/common/logger.js.map +1 -1
- package/lib/common/util.js +30 -9
- package/lib/common/util.js.map +1 -1
- package/lib/index.js +23 -5
- package/lib/index.js.map +1 -1
- package/mschauer5-spfx-toolkit-1.0.25.tgz +0 -0
- package/package.json +3 -2
- package/src/commands/index.ts +2 -1
- package/src/commands/installer.command.ts +80 -53
- package/src/commands/repo.command.ts +218 -0
- package/src/commands/scripts.command.ts +0 -1
- package/src/common/logger.ts +6 -2
- package/src/common/util.ts +36 -8
- package/src/index.ts +25 -6
- package/mschauer5-spfx-toolkit-1.0.22.tgz +0 -0
package/.nvmrc
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
v18.18.0
|
package/lib/commands/index.js
CHANGED
|
@@ -33,7 +33,7 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
33
33
|
};
|
|
34
34
|
})();
|
|
35
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
-
exports.envCommands = exports.nvmrc = exports.installer = exports.openSolution = exports.scripts = exports.version = exports.env = exports.alias = void 0;
|
|
36
|
+
exports.repo = exports.envCommands = exports.nvmrc = exports.installer = exports.openSolution = exports.scripts = exports.version = exports.env = exports.alias = void 0;
|
|
37
37
|
const alias = __importStar(require("./alias.command"));
|
|
38
38
|
exports.alias = alias;
|
|
39
39
|
const eslint = __importStar(require("./eslint.command"));
|
|
@@ -50,4 +50,6 @@ const nvmrc = __importStar(require("./nvmrc.command"));
|
|
|
50
50
|
exports.nvmrc = nvmrc;
|
|
51
51
|
const envCommands = __importStar(require("./env.commands"));
|
|
52
52
|
exports.envCommands = envCommands;
|
|
53
|
+
const repo = __importStar(require("./repo.command"));
|
|
54
|
+
exports.repo = repo;
|
|
53
55
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/commands/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,uDAAyC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/commands/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,uDAAyC;AAShC,sBAAK;AARd,yDAA2C;AAQjB,qBAAG;AAP7B,2DAA6C;AAOd,0BAAO;AANtC,2DAA6C;AAML,0BAAO;AAL/C,mEAAuD;AAKN,6FALxC,oCAAY,OAKwC;AAJ7D,+DAAiD;AAIc,8BAAS;AAHxE,uDAAyC;AAGiC,sBAAK;AAF/E,4DAA8C;AAEmC,kCAAW;AAD5F,qDAAuC;AACuD,oBAAI"}
|
|
@@ -8,77 +8,93 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
8
8
|
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
9
|
});
|
|
10
10
|
};
|
|
11
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
12
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
13
|
-
};
|
|
14
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
-
exports.uninstall = exports.install =
|
|
12
|
+
exports.uninstall = exports.install = void 0;
|
|
16
13
|
const detect_package_manager_1 = require("detect-package-manager");
|
|
17
14
|
const scripts_command_1 = require("./scripts.command");
|
|
18
15
|
const logger_1 = require("../common/logger");
|
|
19
|
-
const
|
|
20
|
-
const
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
const
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
16
|
+
const common_1 = require("../common");
|
|
17
|
+
const fs_1 = require("fs");
|
|
18
|
+
// /**
|
|
19
|
+
// * Adds a command to the user's shell profile to run spfx-toolkit nvmrc use on terminal startup.
|
|
20
|
+
// * Supports bash, zsh (macOS/Linux) and PowerShell (Windows).
|
|
21
|
+
// */
|
|
22
|
+
// export const addNvmrcToStartup = () => {
|
|
23
|
+
// const homedir = os.homedir();
|
|
24
|
+
// const isWin = process.platform === 'win32';
|
|
25
|
+
// let profilePath = '';
|
|
26
|
+
// let shellType = '';
|
|
27
|
+
// let lineToAdd = '';
|
|
28
|
+
// if (isWin) {
|
|
29
|
+
// // PowerShell profile
|
|
30
|
+
// const profileEnv = process.env.USERPROFILE || homedir;
|
|
31
|
+
// // Default PowerShell profile path
|
|
32
|
+
// profilePath = path.join(profileEnv, 'Documents', 'WindowsPowerShell', 'Microsoft.PowerShell_profile.ps1');
|
|
33
|
+
// shellType = 'PowerShell';
|
|
34
|
+
// lineToAdd = 'spfx-toolkit nvmrc use';
|
|
35
|
+
// } else {
|
|
36
|
+
// // Check for zsh or bash
|
|
37
|
+
// if (process.env.SHELL && process.env.SHELL.includes('zsh')) {
|
|
38
|
+
// profilePath = path.join(homedir, '.zshrc');
|
|
39
|
+
// shellType = 'zsh';
|
|
40
|
+
// } else {
|
|
41
|
+
// profilePath = path.join(homedir, '.bashrc');
|
|
42
|
+
// shellType = 'bash';
|
|
43
|
+
// }
|
|
44
|
+
// lineToAdd = 'spfx-toolkit nvmrc use';
|
|
45
|
+
// }
|
|
46
|
+
// // Check if profile exists, create if not
|
|
47
|
+
// if (!fs.existsSync(profilePath)) {
|
|
48
|
+
// fs.writeFileSync(profilePath, '', { encoding: 'utf-8' });
|
|
49
|
+
// }
|
|
50
|
+
// // Check if line already exists
|
|
51
|
+
// const profileContent = fs.readFileSync(profilePath, 'utf-8');
|
|
52
|
+
// if (!profileContent.includes(lineToAdd)) {
|
|
53
|
+
// fs.appendFileSync(profilePath, `\n# Added by spfx-toolkit\n${lineToAdd}\n`, { encoding: 'utf-8' });
|
|
54
|
+
// console.log(`Added '${lineToAdd}' to your ${shellType} profile: ${profilePath}`);
|
|
55
|
+
// } else {
|
|
56
|
+
// console.log(`'${lineToAdd}' is already present in your ${shellType} profile: ${profilePath}`);
|
|
57
|
+
// }
|
|
58
|
+
// };
|
|
59
|
+
const packageInstaller = (name) => __awaiter(void 0, void 0, void 0, function* () {
|
|
60
|
+
var _a, _b;
|
|
61
|
+
const globalPath = common_1.util.getGlobalConfigPaths();
|
|
62
|
+
const fileExists = yield common_1.util.checkIfFileExistsAsync(globalPath.configPath, true);
|
|
63
|
+
if (!fileExists) {
|
|
64
|
+
return { dependencies: [], devDependencies: [] };
|
|
39
65
|
}
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
66
|
+
const data = yield fs_1.promises.readFile(globalPath.configPath, 'utf-8');
|
|
67
|
+
const config = JSON.parse(data);
|
|
68
|
+
if (config && typeof config === 'object' && config.packages) {
|
|
69
|
+
const result = name in config.packages;
|
|
70
|
+
if (result) {
|
|
71
|
+
const packageValue = config.packages[name];
|
|
72
|
+
const dependencies = (_a = packageValue.dependencies) !== null && _a !== void 0 ? _a : [];
|
|
73
|
+
const devDependencies = (_b = packageValue.devDependencies) !== null && _b !== void 0 ? _b : [];
|
|
74
|
+
return { dependencies, devDependencies };
|
|
49
75
|
}
|
|
50
|
-
|
|
51
|
-
}
|
|
52
|
-
// Check if profile exists, create if not
|
|
53
|
-
if (!fs_1.default.existsSync(profilePath)) {
|
|
54
|
-
fs_1.default.writeFileSync(profilePath, '', { encoding: 'utf-8' });
|
|
76
|
+
return { dependencies: [], devDependencies: [] };
|
|
55
77
|
}
|
|
56
|
-
|
|
57
|
-
const profileContent = fs_1.default.readFileSync(profilePath, 'utf-8');
|
|
58
|
-
if (!profileContent.includes(lineToAdd)) {
|
|
59
|
-
fs_1.default.appendFileSync(profilePath, `\n# Added by spfx-toolkit\n${lineToAdd}\n`, { encoding: 'utf-8' });
|
|
60
|
-
console.log(`Added '${lineToAdd}' to your ${shellType} profile: ${profilePath}`);
|
|
61
|
-
}
|
|
62
|
-
else {
|
|
63
|
-
console.log(`'${lineToAdd}' is already present in your ${shellType} profile: ${profilePath}`);
|
|
64
|
-
}
|
|
65
|
-
};
|
|
66
|
-
exports.addNvmrcToStartup = addNvmrcToStartup;
|
|
78
|
+
});
|
|
67
79
|
const install = (name, fromScripts) => __awaiter(void 0, void 0, void 0, function* () {
|
|
68
80
|
const usercommand = yield (0, detect_package_manager_1.detect)();
|
|
69
81
|
const spawn = require('cross-spawn');
|
|
70
82
|
if (fromScripts) {
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
83
|
+
packageInstaller(name).then((results) => {
|
|
84
|
+
if (results.dependencies.length === 0 && results.devDependencies.length === 0) {
|
|
85
|
+
logger_1.logger.error(`No package found with name ${name} in global package.json so can't install`);
|
|
86
|
+
return;
|
|
87
|
+
}
|
|
88
|
+
if (results.dependencies.length > 0) {
|
|
89
|
+
results.dependencies.unshift('install');
|
|
90
|
+
spawn.sync(usercommand, results.dependencies, { stdio: 'inherit' });
|
|
91
|
+
}
|
|
92
|
+
if (results.devDependencies.length > 0) {
|
|
93
|
+
results.devDependencies.unshift('--save-dev');
|
|
94
|
+
results.devDependencies.unshift('install');
|
|
95
|
+
spawn.sync(usercommand, results.devDependencies, { stdio: 'inherit' });
|
|
96
|
+
}
|
|
97
|
+
});
|
|
82
98
|
return;
|
|
83
99
|
}
|
|
84
100
|
if (name === undefined || name.length === 0) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"installer.command.js","sourceRoot":"","sources":["../../src/commands/installer.command.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"installer.command.js","sourceRoot":"","sources":["../../src/commands/installer.command.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,225 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
12
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
13
|
+
};
|
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
exports.goToRepo = exports.goToRepoFromProject = exports.SetRepo = exports.getRepo = void 0;
|
|
16
|
+
const logger_1 = require("../common/logger");
|
|
17
|
+
const common_1 = require("../common");
|
|
18
|
+
const fs_1 = require("fs");
|
|
19
|
+
const path_1 = __importDefault(require("path"));
|
|
20
|
+
const readline_1 = __importDefault(require("readline"));
|
|
21
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
22
|
+
const codeEmoji = '</>';
|
|
23
|
+
const dirEmpoji = '📁 ';
|
|
24
|
+
const openVSCodeInDirectory = (directory) => {
|
|
25
|
+
const spawn = require('child_process').spawn;
|
|
26
|
+
// Open the selected directory in VS Code
|
|
27
|
+
spawn(process.platform === 'win32' ? 'code.cmd' : 'code', [directory], {
|
|
28
|
+
stdio: 'inherit',
|
|
29
|
+
shell: true
|
|
30
|
+
});
|
|
31
|
+
};
|
|
32
|
+
const displayOptions = (location) => {
|
|
33
|
+
const fs = require('fs');
|
|
34
|
+
const rootPackageJsonPath = path_1.default.join(location, 'package.json');
|
|
35
|
+
const hasPackageJson = fs.existsSync(rootPackageJsonPath);
|
|
36
|
+
if (hasPackageJson) {
|
|
37
|
+
openVSCodeInDirectory(location);
|
|
38
|
+
return;
|
|
39
|
+
}
|
|
40
|
+
const childDirs = fs.readdirSync(location).filter((file) => {
|
|
41
|
+
return fs.statSync(path_1.default.join(location, file)).isDirectory();
|
|
42
|
+
});
|
|
43
|
+
const options = childDirs.map((dir, index) => {
|
|
44
|
+
const newPath = path_1.default.join(location, dir);
|
|
45
|
+
const packageJsonPath = path_1.default.join(newPath, 'package.json');
|
|
46
|
+
const hasPackageJson = fs.existsSync(packageJsonPath);
|
|
47
|
+
return { path: path_1.default.join(location, dir), label: `[${index + 1}] ${dir}`, hasPackageJson: hasPackageJson, emoji: hasPackageJson ? codeEmoji : dirEmpoji };
|
|
48
|
+
});
|
|
49
|
+
logger_1.logger.log(`${dirEmpoji} Directories in current location:`, chalk_1.default.cyan);
|
|
50
|
+
options.forEach((option) => {
|
|
51
|
+
logger_1.logger.log(`${option.emoji} ${option.label}`);
|
|
52
|
+
});
|
|
53
|
+
const rl = readline_1.default.createInterface({
|
|
54
|
+
input: process.stdin,
|
|
55
|
+
output: process.stdout
|
|
56
|
+
});
|
|
57
|
+
rl.question('Enter the number of the directory to select or 0 to cancel (append -vs to force open in VS Code): ', (answer) => {
|
|
58
|
+
const trimmed = answer.trim();
|
|
59
|
+
const vsFlag = trimmed.endsWith('-vs');
|
|
60
|
+
const numPart = vsFlag ? trimmed.replace(/-vs$/i, '').trim() : trimmed;
|
|
61
|
+
const idx = parseInt(numPart, 10) - 1;
|
|
62
|
+
if (idx >= 0 && idx < childDirs.length) {
|
|
63
|
+
const newPath = options[idx].path;
|
|
64
|
+
if (options[idx].hasPackageJson || vsFlag) {
|
|
65
|
+
// Valid selection or forced VS Code open
|
|
66
|
+
openVSCodeInDirectory(newPath);
|
|
67
|
+
rl.close();
|
|
68
|
+
return;
|
|
69
|
+
}
|
|
70
|
+
else {
|
|
71
|
+
rl.close();
|
|
72
|
+
// Recursively prompt in the new directory
|
|
73
|
+
displayOptions(newPath);
|
|
74
|
+
return;
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
else if (numPart === '0') {
|
|
78
|
+
if (vsFlag) {
|
|
79
|
+
openVSCodeInDirectory(location);
|
|
80
|
+
}
|
|
81
|
+
rl.close();
|
|
82
|
+
return;
|
|
83
|
+
}
|
|
84
|
+
else {
|
|
85
|
+
console.log('Invalid selection.');
|
|
86
|
+
rl.close();
|
|
87
|
+
return;
|
|
88
|
+
}
|
|
89
|
+
});
|
|
90
|
+
};
|
|
91
|
+
const findDirectory = (location, chars) => {
|
|
92
|
+
const fs = require('fs');
|
|
93
|
+
const readline = require('readline');
|
|
94
|
+
const childDirs = fs.readdirSync(location).filter((file) => {
|
|
95
|
+
return fs.statSync(path_1.default.join(location, file)).isDirectory();
|
|
96
|
+
});
|
|
97
|
+
// Find all matches (case-insensitive, must start with chars)
|
|
98
|
+
const matches = childDirs.filter((dir) => dir.toLowerCase().startsWith(chars.toLowerCase()));
|
|
99
|
+
if (matches.length === 0) {
|
|
100
|
+
return Promise.resolve(undefined);
|
|
101
|
+
}
|
|
102
|
+
else if (matches.length === 1) {
|
|
103
|
+
return new Promise((resolve) => resolve(path_1.default.join(location, matches[0])));
|
|
104
|
+
}
|
|
105
|
+
else {
|
|
106
|
+
// Multiple matches, prompt user to select with emoji and label
|
|
107
|
+
console.log('Multiple directories match your input:');
|
|
108
|
+
const options = matches.map((dir, idx) => {
|
|
109
|
+
const newPath = path_1.default.join(location, dir);
|
|
110
|
+
const packageJsonPath = path_1.default.join(newPath, 'package.json');
|
|
111
|
+
const hasPackageJson = fs.existsSync(packageJsonPath);
|
|
112
|
+
return {
|
|
113
|
+
path: newPath,
|
|
114
|
+
label: `[${idx + 1}] ${dir}`,
|
|
115
|
+
emoji: hasPackageJson ? codeEmoji : dirEmpoji
|
|
116
|
+
};
|
|
117
|
+
});
|
|
118
|
+
options.forEach((option) => {
|
|
119
|
+
console.log(`${option.emoji} ${option.label}`);
|
|
120
|
+
});
|
|
121
|
+
const rl = readline.createInterface({
|
|
122
|
+
input: process.stdin,
|
|
123
|
+
output: process.stdout
|
|
124
|
+
});
|
|
125
|
+
return new Promise((resolve) => {
|
|
126
|
+
rl.question('Enter the number to select or 0 to cancel (append -vs to force open in VS Code): ', (answer) => {
|
|
127
|
+
const trimmed = answer.trim();
|
|
128
|
+
const vsFlag = trimmed.endsWith('-vs');
|
|
129
|
+
const numPart = vsFlag ? trimmed.replace(/-vs$/i, '').trim() : trimmed;
|
|
130
|
+
const idx = parseInt(numPart, 10) - 1;
|
|
131
|
+
if (idx >= 0 && idx < options.length) {
|
|
132
|
+
if (vsFlag) {
|
|
133
|
+
openVSCodeInDirectory(options[idx].path);
|
|
134
|
+
rl.close();
|
|
135
|
+
resolve('***');
|
|
136
|
+
return;
|
|
137
|
+
}
|
|
138
|
+
rl.close();
|
|
139
|
+
resolve(options[idx].path);
|
|
140
|
+
return;
|
|
141
|
+
}
|
|
142
|
+
else if (numPart === '0') {
|
|
143
|
+
if (vsFlag) {
|
|
144
|
+
openVSCodeInDirectory(location);
|
|
145
|
+
rl.close();
|
|
146
|
+
resolve('***');
|
|
147
|
+
return;
|
|
148
|
+
}
|
|
149
|
+
rl.close();
|
|
150
|
+
resolve('***');
|
|
151
|
+
return;
|
|
152
|
+
}
|
|
153
|
+
else {
|
|
154
|
+
console.log('Invalid selection.');
|
|
155
|
+
rl.close();
|
|
156
|
+
resolve(undefined);
|
|
157
|
+
return;
|
|
158
|
+
}
|
|
159
|
+
});
|
|
160
|
+
});
|
|
161
|
+
}
|
|
162
|
+
};
|
|
163
|
+
const getRepo = () => __awaiter(void 0, void 0, void 0, function* () {
|
|
164
|
+
const globalPath = common_1.util.getGlobalConfigPaths();
|
|
165
|
+
const fileExists = yield common_1.util.checkIfFileExistsAsync(globalPath.configPath, true);
|
|
166
|
+
if (!fileExists) {
|
|
167
|
+
return;
|
|
168
|
+
}
|
|
169
|
+
const data = yield fs_1.promises.readFile(globalPath.configPath, 'utf-8');
|
|
170
|
+
const config = JSON.parse(data);
|
|
171
|
+
const name = 'repositoryDirectory';
|
|
172
|
+
if (config && typeof config === 'object' && config[name]) {
|
|
173
|
+
const repo = config[name];
|
|
174
|
+
return repo;
|
|
175
|
+
}
|
|
176
|
+
else {
|
|
177
|
+
return;
|
|
178
|
+
}
|
|
179
|
+
});
|
|
180
|
+
exports.getRepo = getRepo;
|
|
181
|
+
const SetRepo = () => __awaiter(void 0, void 0, void 0, function* () {
|
|
182
|
+
const globalPath = common_1.util.getGlobalConfigPaths();
|
|
183
|
+
const fileExists = yield common_1.util.checkIfFileExistsAsync(globalPath.configPath, true);
|
|
184
|
+
if (!fileExists) {
|
|
185
|
+
yield common_1.util.initGlobalPackageJsonWithDefaults(true);
|
|
186
|
+
}
|
|
187
|
+
const local = path_1.default.join(process.cwd());
|
|
188
|
+
logger_1.logger.info(`Setting repository to: ${local}`);
|
|
189
|
+
const data = yield fs_1.promises.readFile(globalPath.configPath, 'utf-8');
|
|
190
|
+
const packageJson = JSON.parse(data);
|
|
191
|
+
packageJson.repositoryDirectory = local;
|
|
192
|
+
yield fs_1.promises.writeFile(globalPath.configPath, JSON.stringify(packageJson, null, 2), 'utf-8');
|
|
193
|
+
});
|
|
194
|
+
exports.SetRepo = SetRepo;
|
|
195
|
+
const goToRepoFromProject = (args) => __awaiter(void 0, void 0, void 0, function* () {
|
|
196
|
+
logger_1.logger.info('Looking for repository from global package.json based on project shortcut...');
|
|
197
|
+
});
|
|
198
|
+
exports.goToRepoFromProject = goToRepoFromProject;
|
|
199
|
+
const goToRepo = (args) => __awaiter(void 0, void 0, void 0, function* () {
|
|
200
|
+
const repo = yield (0, exports.getRepo)();
|
|
201
|
+
if (repo === undefined) {
|
|
202
|
+
logger_1.logger.error('No repository set. Please run " set-repo" first to set the repository location.');
|
|
203
|
+
return;
|
|
204
|
+
}
|
|
205
|
+
if (!args || args.length === 0) {
|
|
206
|
+
displayOptions(repo);
|
|
207
|
+
return;
|
|
208
|
+
}
|
|
209
|
+
let targetPath = repo;
|
|
210
|
+
for (const arg of args) {
|
|
211
|
+
targetPath = yield findDirectory(targetPath, arg);
|
|
212
|
+
if (targetPath === undefined) {
|
|
213
|
+
logger_1.logger.error(`Could not find directory matching "${arg}". Exiting.`);
|
|
214
|
+
return;
|
|
215
|
+
}
|
|
216
|
+
else if (targetPath.endsWith('***')) {
|
|
217
|
+
// Check if VS Code was opened (user used -vs)
|
|
218
|
+
// If the directory was opened, do not log error, just exit
|
|
219
|
+
return;
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
displayOptions(targetPath);
|
|
223
|
+
});
|
|
224
|
+
exports.goToRepo = goToRepo;
|
|
225
|
+
//# sourceMappingURL=repo.command.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"repo.command.js","sourceRoot":"","sources":["../../src/commands/repo.command.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scripts.command.js","sourceRoot":"","sources":["../../src/commands/scripts.command.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"scripts.command.js","sourceRoot":"","sources":["../../src/commands/scripts.command.ts"],"names":[],"mappings":"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"}
|
package/lib/common/logger.js
CHANGED
|
@@ -22,8 +22,13 @@ class Logger {
|
|
|
22
22
|
this.logger(log_symbols_1.default.success, chalk_1.default.green(message));
|
|
23
23
|
this.newLine();
|
|
24
24
|
}
|
|
25
|
-
log(message) {
|
|
26
|
-
|
|
25
|
+
log(message, color) {
|
|
26
|
+
if (color) {
|
|
27
|
+
this.logger(color(message));
|
|
28
|
+
}
|
|
29
|
+
else {
|
|
30
|
+
this.logger(message);
|
|
31
|
+
}
|
|
27
32
|
}
|
|
28
33
|
warning(message) {
|
|
29
34
|
this.logger(log_symbols_1.default.warning, chalk_1.default.yellowBright(message));
|
package/lib/common/logger.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/common/logger.ts"],"names":[],"mappings":";;;;;;AAAA,+BAA+B;AAC/B,kDAA0B;AAC1B,8DAAqC;AAErC,MAAM,MAAM;IAGV;QACE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACnC,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC;QAE/C,IAAI,MAAM,EAAE,CAAC;YACX,IAAI,CAAC,MAAM,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC;QACxB,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC;QAC5B,CAAC;IACH,CAAC;IAEM,OAAO,CAAC,OAAe;QAC5B,IAAI,CAAC,MAAM,CAAC,qBAAU,CAAC,OAAO,EAAE,eAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;QACtD,IAAI,CAAC,OAAO,EAAE,CAAC;IACjB,CAAC;IAEM,GAAG,CAAC,OAAe;
|
|
1
|
+
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/common/logger.ts"],"names":[],"mappings":";;;;;;AAAA,+BAA+B;AAC/B,kDAA0B;AAC1B,8DAAqC;AAErC,MAAM,MAAM;IAGV;QACE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACnC,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC;QAE/C,IAAI,MAAM,EAAE,CAAC;YACX,IAAI,CAAC,MAAM,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC;QACxB,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC;QAC5B,CAAC;IACH,CAAC;IAEM,OAAO,CAAC,OAAe;QAC5B,IAAI,CAAC,MAAM,CAAC,qBAAU,CAAC,OAAO,EAAE,eAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;QACtD,IAAI,CAAC,OAAO,EAAE,CAAC;IACjB,CAAC;IAEM,GAAG,CAAC,OAAe,EAAE,KAAmB;QAC7C,IAAI,KAAK,EAAE,CAAC;YACV,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;QAC9B,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QACvB,CAAC;IACH,CAAC;IAEM,OAAO,CAAC,OAAe;QAC5B,IAAI,CAAC,MAAM,CAAC,qBAAU,CAAC,OAAO,EAAE,eAAK,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC;IAC/D,CAAC;IAEM,KAAK,CAAC,OAAe;QAC1B,IAAI,CAAC,MAAM,CAAC,qBAAU,CAAC,KAAK,EAAE,eAAK,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC;IAC1D,CAAC;IAEM,IAAI,CAAC,OAAe;QACzB,IAAI,CAAC,MAAM,CAAC,qBAAU,CAAC,IAAI,EAAE,eAAK,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC;IAC1D,CAAC;IAEM,OAAO;QACZ,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IAClB,CAAC;CACF;AAEY,QAAA,MAAM,GAAG,IAAI,MAAM,EAAE,CAAC"}
|
package/lib/common/util.js
CHANGED
|
@@ -18,20 +18,19 @@ exports.isUsingGulp = isUsingGulp;
|
|
|
18
18
|
exports.openGlobalPackageJsonInEditor = openGlobalPackageJsonInEditor;
|
|
19
19
|
exports.initGlobalPackageJsonWithDefaults = initGlobalPackageJsonWithDefaults;
|
|
20
20
|
const fs_1 = require("fs");
|
|
21
|
+
const fs_2 = __importDefault(require("fs"));
|
|
21
22
|
const os_1 = __importDefault(require("os"));
|
|
22
23
|
const path_1 = __importDefault(require("path"));
|
|
24
|
+
const logger_1 = require("./logger");
|
|
23
25
|
function checkIfFileExistsAsync(filename_1) {
|
|
24
26
|
return __awaiter(this, arguments, void 0, function* (filename, includeError = true) {
|
|
25
|
-
|
|
26
|
-
yield fs_1.promises.readFile(filename, 'utf-8');
|
|
27
|
-
return true;
|
|
28
|
-
}
|
|
29
|
-
catch (err) {
|
|
27
|
+
if (!fs_2.default.existsSync(filename)) {
|
|
30
28
|
if (includeError) {
|
|
31
|
-
|
|
29
|
+
logger_1.logger.error(`No ${filename} found!`);
|
|
32
30
|
}
|
|
33
|
-
return
|
|
31
|
+
return false;
|
|
34
32
|
}
|
|
33
|
+
return true;
|
|
35
34
|
});
|
|
36
35
|
}
|
|
37
36
|
function getGlobalConfigPaths() {
|
|
@@ -50,6 +49,7 @@ function ensureGlobalPackageJsonExists() {
|
|
|
50
49
|
const { configDir, configPath } = getGlobalConfigPaths();
|
|
51
50
|
const exists = yield checkIfFileExistsAsync(configPath, false);
|
|
52
51
|
if (!exists) {
|
|
52
|
+
// Create the directory if it doesn't exist and then create an empty package.json
|
|
53
53
|
yield fs_1.promises.mkdir(configDir, { recursive: true });
|
|
54
54
|
yield fs_1.promises.writeFile(configPath, JSON.stringify({ scripts: {} }, null, 2), 'utf-8');
|
|
55
55
|
}
|
|
@@ -77,8 +77,21 @@ function initGlobalPackageJsonWithDefaults(force) {
|
|
|
77
77
|
'bundle:gulp': 'heft test --clean --production && heft package-solution --production',
|
|
78
78
|
'bundle:heft': 'heft build --clean && heft package',
|
|
79
79
|
'serve:heft': 'heft build-watch --serve',
|
|
80
|
-
'serve:gulp': 'gulp serve'
|
|
81
|
-
|
|
80
|
+
'serve:gulp': 'gulp serve'
|
|
81
|
+
};
|
|
82
|
+
const defaultPackages = {
|
|
83
|
+
pnp: {
|
|
84
|
+
dependencies: ['@pnp/graph', '@pnp/core', '@pnp/odata', '@pnp/queryable', '@pnp/sp']
|
|
85
|
+
},
|
|
86
|
+
'react-query': {
|
|
87
|
+
dependencies: [
|
|
88
|
+
'@tanstack/react-query@4',
|
|
89
|
+
'@tanstack/query-async-storage-persister@4',
|
|
90
|
+
'@tanstack/query-persist-client-core@4',
|
|
91
|
+
'@tanstack/query-sync-storage-persister@5'
|
|
92
|
+
],
|
|
93
|
+
devDependencies: ['@tanstack/react-query-devtools@4']
|
|
94
|
+
}
|
|
82
95
|
};
|
|
83
96
|
const packageJsonContent = yield fs_1.promises.readFile(configPath, 'utf-8');
|
|
84
97
|
const packageJson = JSON.parse(packageJsonContent);
|
|
@@ -89,7 +102,15 @@ function initGlobalPackageJsonWithDefaults(force) {
|
|
|
89
102
|
packageJson.scripts[key] = value;
|
|
90
103
|
}
|
|
91
104
|
}
|
|
105
|
+
// packageJson.packages
|
|
106
|
+
packageJson.packages = packageJson.packages || {};
|
|
107
|
+
for (const [key, value] of Object.entries(defaultPackages)) {
|
|
108
|
+
if (force || !(key in packageJson.packages)) {
|
|
109
|
+
packageJson.packages[key] = value;
|
|
110
|
+
}
|
|
111
|
+
}
|
|
92
112
|
yield fs_1.promises.writeFile(configPath, JSON.stringify(packageJson, null, 2), 'utf-8');
|
|
113
|
+
logger_1.logger.success(`Global package.json initialized at ${configPath}`);
|
|
93
114
|
});
|
|
94
115
|
}
|
|
95
116
|
//# sourceMappingURL=util.js.map
|
package/lib/common/util.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"util.js","sourceRoot":"","sources":["../../src/common/util.ts"],"names":[],"mappings":";;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"util.js","sourceRoot":"","sources":["../../src/common/util.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AAMA,wDASC;AAED,oDAKC;AAED,kCAGC;AAeD,sEAUC;AAED,8EAiDC;AAvGD,2BAA4C;AAC5C,4CAAoB;AACpB,4CAAoB;AACpB,gDAAwB;AACxB,qCAAkC;AAElC,SAAsB,sBAAsB;yDAAC,QAAQ,EAAE,YAAY,GAAG,IAAI;QACxE,IAAI,CAAC,YAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC7B,IAAI,YAAY,EAAE,CAAC;gBACjB,eAAM,CAAC,KAAK,CAAC,MAAM,QAAQ,SAAS,CAAC,CAAC;YACxC,CAAC;YACD,OAAO,KAAK,CAAC;QACf,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;CAAA;AAED,SAAgB,oBAAoB;IAClC,MAAM,SAAS,GAAG,cAAI,CAAC,IAAI,CAAC,YAAE,CAAC,OAAO,EAAE,EAAE,eAAe,CAAC,CAAC;IAC3D,MAAM,UAAU,GAAG,cAAI,CAAC,IAAI,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC;IAExD,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,CAAC;AACnC,CAAC;AAED,SAAsB,WAAW;;QAC/B,MAAM,QAAQ,GAAG,aAAa,CAAC;QAC/B,OAAO,MAAM,sBAAsB,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;IACvD,CAAC;CAAA;AAED,SAAe,6BAA6B;;QAC1C,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,GAAG,oBAAoB,EAAE,CAAC;QACzD,MAAM,MAAM,GAAG,MAAM,sBAAsB,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;QAE/D,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,iFAAiF;YAEjF,MAAM,aAAU,CAAC,KAAK,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YAEvD,MAAM,aAAU,CAAC,SAAS,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;QAC5F,CAAC;IACH,CAAC;CAAA;AAED,SAAsB,6BAA6B;;QACjD,MAAM,EAAE,UAAU,EAAE,GAAG,oBAAoB,EAAE,CAAC;QAC9C,MAAM,6BAA6B,EAAE,CAAC;QAEtC,MAAM,KAAK,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC,KAAK,CAAC;QAC7C,0CAA0C;QAC1C,KAAK,CAAC,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,UAAU,CAAC,EAAE;YACtE,KAAK,EAAE,SAAS;YAChB,KAAK,EAAE,IAAI;SACZ,CAAC,CAAC;IACL,CAAC;CAAA;AAED,SAAsB,iCAAiC,CAAC,KAAe;;QACrE,MAAM,EAAE,UAAU,EAAE,GAAG,oBAAoB,EAAE,CAAC;QAC9C,6BAA6B,EAAE,CAAC;QAEhC,MAAM,cAAc,GAAG;YACrB,YAAY,EAAE,YAAY;YAC1B,YAAY,EAAE,YAAY;YAC1B,aAAa,EAAE,sEAAsE;YACrF,aAAa,EAAE,oCAAoC;YACnD,YAAY,EAAE,0BAA0B;YACxC,YAAY,EAAE,YAAY;SAC3B,CAAC;QAEF,MAAM,eAAe,GAAG;YACtB,GAAG,EAAE;gBACH,YAAY,EAAE,CAAC,YAAY,EAAE,WAAW,EAAE,YAAY,EAAE,gBAAgB,EAAE,SAAS,CAAC;aACrF;YACD,aAAa,EAAE;gBACb,YAAY,EAAE;oBACZ,yBAAyB;oBACzB,2CAA2C;oBAC3C,uCAAuC;oBACvC,0CAA0C;iBAC3C;gBACD,eAAe,EAAE,CAAC,kCAAkC,CAAC;aACtD;SACF,CAAC;QAEF,MAAM,kBAAkB,GAAG,MAAM,aAAU,CAAC,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;QAC1E,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC;QAEnD,oGAAoG;QACpG,WAAW,CAAC,OAAO,GAAG,WAAW,CAAC,OAAO,IAAI,EAAE,CAAC;QAChD,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,cAAc,CAAC,EAAE,CAAC;YAC1D,IAAI,KAAK,IAAI,CAAC,CAAC,GAAG,IAAI,WAAW,CAAC,OAAO,CAAC,EAAE,CAAC;gBAC3C,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;YACnC,CAAC;QACH,CAAC;QAED,uBAAuB;QACvB,WAAW,CAAC,QAAQ,GAAG,WAAW,CAAC,QAAQ,IAAI,EAAE,CAAC;QAClD,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,eAAe,CAAC,EAAE,CAAC;YAC3D,IAAI,KAAK,IAAI,CAAC,CAAC,GAAG,IAAI,WAAW,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAC5C,WAAW,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;YACpC,CAAC;QACH,CAAC;QAED,MAAM,aAAU,CAAC,SAAS,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;QACtF,eAAM,CAAC,OAAO,CAAC,sCAAsC,UAAU,EAAE,CAAC,CAAC;IACrE,CAAC;CAAA"}
|
package/lib/index.js
CHANGED
|
@@ -48,7 +48,7 @@ program
|
|
|
48
48
|
.name('Matt Schauer SPFx Toolkit')
|
|
49
49
|
.description('CLI to help with SPFx development')
|
|
50
50
|
.addHelpText('beforeAll', chalk_1.default.blueBright('Developed by Matt Schauer'))
|
|
51
|
-
.version('1.0.
|
|
51
|
+
.version('1.0.25');
|
|
52
52
|
program
|
|
53
53
|
.command('add-alias')
|
|
54
54
|
.description('add alias')
|
|
@@ -62,6 +62,24 @@ program
|
|
|
62
62
|
.action(() => {
|
|
63
63
|
commands.alias.clearAlias(defaultToolkitName);
|
|
64
64
|
});
|
|
65
|
+
program
|
|
66
|
+
.command('set-repo')
|
|
67
|
+
.description('Set current folder as the default repo location')
|
|
68
|
+
.action(() => {
|
|
69
|
+
commands.repo.SetRepo();
|
|
70
|
+
});
|
|
71
|
+
program
|
|
72
|
+
.command('repo [args...]')
|
|
73
|
+
.description('Go to repository location')
|
|
74
|
+
.option('-p, --project', 'If set will look in global package.json for matching shortcut to repository')
|
|
75
|
+
.action((args, options) => {
|
|
76
|
+
console.log('options:', options);
|
|
77
|
+
if (options.project) {
|
|
78
|
+
commands.repo.goToRepoFromProject(Array.isArray(args) ? args : []);
|
|
79
|
+
return;
|
|
80
|
+
}
|
|
81
|
+
commands.repo.goToRepo(Array.isArray(args) ? args : []);
|
|
82
|
+
});
|
|
65
83
|
program
|
|
66
84
|
.command('serve')
|
|
67
85
|
.alias('s')
|
|
@@ -106,10 +124,10 @@ program
|
|
|
106
124
|
commands.installer.install(packages, false);
|
|
107
125
|
});
|
|
108
126
|
program
|
|
109
|
-
.command('install-
|
|
110
|
-
.alias('
|
|
111
|
-
.description('Run an
|
|
112
|
-
.addArgument(new commander.Argument('<name>', '
|
|
127
|
+
.command('install-packages')
|
|
128
|
+
.alias('ips')
|
|
129
|
+
.description('Run an installer package from global package.json by name')
|
|
130
|
+
.addArgument(new commander.Argument('<name>', 'package name in global config to install'))
|
|
113
131
|
.action((name) => {
|
|
114
132
|
commands.installer.install(name, true);
|
|
115
133
|
});
|
package/lib/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,kDAA0B;AAC1B,qDAAuC;AACvC,yCAAoC;AACpC,qDAAuC;AACvC,qCAAwC;AACxC,MAAM,OAAO,GAAG,IAAI,mBAAO,EAAE,CAAC;AAE9B,MAAM,kBAAkB,GAAG,cAAc,CAAC;AAE1C,OAAO;KACJ,IAAI,CAAC,2BAA2B,CAAC;KACjC,WAAW,CAAC,mCAAmC,CAAC;KAChD,WAAW,CAAC,WAAW,EAAE,eAAK,CAAC,UAAU,CAAC,2BAA2B,CAAC,CAAC;KACvE,OAAO,CAAC,QAAQ,CAAC,CAAC;AAErB,OAAO;KACJ,OAAO,CAAC,WAAW,CAAC;KACpB,WAAW,CAAC,WAAW,CAAC;KACxB,WAAW,CAAC,IAAI,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAE,oCAAoC,CAAC,CAAC;KACnF,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE;IACf,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,EAAE,kBAAkB,CAAC,CAAC;AACpD,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,aAAa,CAAC;KACtB,WAAW,CAAC,mCAAmC,CAAC;KAChD,MAAM,CAAC,GAAG,EAAE;IACX,QAAQ,CAAC,KAAK,CAAC,UAAU,CAAC,kBAAkB,CAAC,CAAC;AAChD,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,OAAO,CAAC;KAChB,KAAK,CAAC,GAAG,CAAC;KACV,WAAW,CAAC,gCAAgC,CAAC;KAC7C,MAAM,CAAC,GAAG,EAAE;IACX,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;AAChC,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,OAAO,CAAC;KAChB,KAAK,CAAC,IAAI,CAAC;KACX,WAAW,CAAC,eAAe,CAAC;KAC5B,MAAM,CAAC,GAAG,EAAE;IACX,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;AAChC,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,QAAQ,CAAC;KACjB,KAAK,CAAC,IAAI,CAAC;KACX,WAAW,CAAC,gBAAgB,CAAC;KAC7B,MAAM,CAAC,wBAAwB,EAAE,iDAAiD,EAAE,CAAC,KAAa,EAAE,EAAE;IACrG,IAAI,CAAC,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QACjD,MAAM,IAAI,KAAK,CAAC,2BAA2B,KAAK,2CAA2C,CAAC,CAAC;IAC/F,CAAC;IACD,OAAO,KAAK,CAAC,CAAC,6BAA6B;AAC7C,CAAC,CAAC;KACD,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE;IAClB,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;AACpD,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,KAAK,CAAC;KACd,KAAK,CAAC,GAAG,CAAC;KACV,WAAW,CAAC,wCAAwC,CAAC;KACrD,WAAW,CAAC,IAAI,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAE,sCAAsC,CAAC,CAAC;KACrF,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE;IACf,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AAC7B,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,SAAS,CAAC;KAClB,KAAK,CAAC,GAAG,CAAC;KACV,WAAW,CAAC,gBAAgB,CAAC;KAC7B,WAAW,CAAC,IAAI,SAAS,CAAC,QAAQ,CAAC,YAAY,EAAE,gEAAgE,CAAC,CAAC;KACnH,MAAM,CAAC,CAAC,QAAQ,EAAE,EAAE;IACnB,QAAQ,CAAC,SAAS,CAAC,OAAO,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;AAC9C,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
Binary file
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mschauer5/spfx-toolkit",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.26",
|
|
4
4
|
"description": "Toolkit for SPFx projects",
|
|
5
5
|
"main": "index.js",
|
|
6
6
|
"bin": {
|
|
@@ -13,9 +13,10 @@
|
|
|
13
13
|
"test:clear-alias": "npm run build && node lib/index.js clear-alias",
|
|
14
14
|
"test:serve": "npm run build && node lib/index.js serve",
|
|
15
15
|
"test:build": "npm run build && node lib/index.js build",
|
|
16
|
+
"test:configInit": "npm run build && node lib/index.js ogci",
|
|
16
17
|
"push": "npm run build && npm publish --access public",
|
|
17
18
|
"test:env": "npm run build && node lib/index.js set-env",
|
|
18
|
-
"prepublish": "npm run build && npm uninstall .\\mschauer5-spfx-toolkit-1.0.
|
|
19
|
+
"prepublish": "npm run build && npm uninstall .\\mschauer5-spfx-toolkit-1.0.25.tgz -g && npm pack . && npm install .\\mschauer5-spfx-toolkit-1.0.25.tgz -g"
|
|
19
20
|
},
|
|
20
21
|
"repository": {
|
|
21
22
|
"type": "git",
|
package/src/commands/index.ts
CHANGED
|
@@ -6,4 +6,5 @@ import { openSolution } from './open-solution.command';
|
|
|
6
6
|
import * as installer from './installer.command';
|
|
7
7
|
import * as nvmrc from './nvmrc.command';
|
|
8
8
|
import * as envCommands from './env.commands';
|
|
9
|
-
|
|
9
|
+
import * as repo from './repo.command';
|
|
10
|
+
export { alias, eslint as env, version, scripts, openSolution, installer, nvmrc, envCommands, repo };
|
|
@@ -1,52 +1,73 @@
|
|
|
1
1
|
import { detect } from 'detect-package-manager';
|
|
2
2
|
import { getScriptByName } from './scripts.command';
|
|
3
3
|
import { logger } from '../common/logger';
|
|
4
|
-
import
|
|
5
|
-
import
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
4
|
+
import { util } from '../common';
|
|
5
|
+
import { promises as fsPromises } from 'fs';
|
|
6
|
+
// /**
|
|
7
|
+
// * Adds a command to the user's shell profile to run spfx-toolkit nvmrc use on terminal startup.
|
|
8
|
+
// * Supports bash, zsh (macOS/Linux) and PowerShell (Windows).
|
|
9
|
+
// */
|
|
10
|
+
// export const addNvmrcToStartup = () => {
|
|
11
|
+
// const homedir = os.homedir();
|
|
12
|
+
// const isWin = process.platform === 'win32';
|
|
13
|
+
// let profilePath = '';
|
|
14
|
+
// let shellType = '';
|
|
15
|
+
// let lineToAdd = '';
|
|
16
|
+
|
|
17
|
+
// if (isWin) {
|
|
18
|
+
// // PowerShell profile
|
|
19
|
+
// const profileEnv = process.env.USERPROFILE || homedir;
|
|
20
|
+
// // Default PowerShell profile path
|
|
21
|
+
// profilePath = path.join(profileEnv, 'Documents', 'WindowsPowerShell', 'Microsoft.PowerShell_profile.ps1');
|
|
22
|
+
// shellType = 'PowerShell';
|
|
23
|
+
// lineToAdd = 'spfx-toolkit nvmrc use';
|
|
24
|
+
// } else {
|
|
25
|
+
// // Check for zsh or bash
|
|
26
|
+
// if (process.env.SHELL && process.env.SHELL.includes('zsh')) {
|
|
27
|
+
// profilePath = path.join(homedir, '.zshrc');
|
|
28
|
+
// shellType = 'zsh';
|
|
29
|
+
// } else {
|
|
30
|
+
// profilePath = path.join(homedir, '.bashrc');
|
|
31
|
+
// shellType = 'bash';
|
|
32
|
+
// }
|
|
33
|
+
// lineToAdd = 'spfx-toolkit nvmrc use';
|
|
34
|
+
// }
|
|
35
|
+
|
|
36
|
+
// // Check if profile exists, create if not
|
|
37
|
+
// if (!fs.existsSync(profilePath)) {
|
|
38
|
+
// fs.writeFileSync(profilePath, '', { encoding: 'utf-8' });
|
|
39
|
+
// }
|
|
37
40
|
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
+
// // Check if line already exists
|
|
42
|
+
// const profileContent = fs.readFileSync(profilePath, 'utf-8');
|
|
43
|
+
// if (!profileContent.includes(lineToAdd)) {
|
|
44
|
+
// fs.appendFileSync(profilePath, `\n# Added by spfx-toolkit\n${lineToAdd}\n`, { encoding: 'utf-8' });
|
|
45
|
+
// console.log(`Added '${lineToAdd}' to your ${shellType} profile: ${profilePath}`);
|
|
46
|
+
// } else {
|
|
47
|
+
// console.log(`'${lineToAdd}' is already present in your ${shellType} profile: ${profilePath}`);
|
|
48
|
+
// }
|
|
49
|
+
// };
|
|
50
|
+
|
|
51
|
+
const packageInstaller = async (name: string): Promise<{ dependencies: string[]; devDependencies: string[] }> => {
|
|
52
|
+
const globalPath = util.getGlobalConfigPaths();
|
|
53
|
+
const fileExists = await util.checkIfFileExistsAsync(globalPath.configPath, true);
|
|
54
|
+
if (!fileExists) {
|
|
55
|
+
return { dependencies: [], devDependencies: [] };
|
|
41
56
|
}
|
|
42
57
|
|
|
43
|
-
|
|
44
|
-
const
|
|
45
|
-
if (
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
58
|
+
const data = await fsPromises.readFile(globalPath.configPath, 'utf-8');
|
|
59
|
+
const config = JSON.parse(data);
|
|
60
|
+
if (config && typeof config === 'object' && config.packages) {
|
|
61
|
+
const result = name in config.packages;
|
|
62
|
+
if (result) {
|
|
63
|
+
const packageValue = config.packages[name];
|
|
64
|
+
const dependencies = packageValue.dependencies ?? [];
|
|
65
|
+
const devDependencies = packageValue.devDependencies ?? [];
|
|
66
|
+
|
|
67
|
+
return { dependencies, devDependencies };
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
return { dependencies: [], devDependencies: [] };
|
|
50
71
|
}
|
|
51
72
|
};
|
|
52
73
|
|
|
@@ -55,19 +76,25 @@ export const install = async (name: string, fromScripts: boolean) => {
|
|
|
55
76
|
const spawn = require('cross-spawn');
|
|
56
77
|
|
|
57
78
|
if (fromScripts) {
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
79
|
+
packageInstaller(name).then((results) => {
|
|
80
|
+
if (results.dependencies.length === 0 && results.devDependencies.length === 0) {
|
|
81
|
+
logger.error(`No package found with name ${name} in global package.json so can't install`);
|
|
82
|
+
return;
|
|
83
|
+
}
|
|
84
|
+
if (results.dependencies.length > 0) {
|
|
85
|
+
results.dependencies.unshift('install');
|
|
86
|
+
spawn.sync(usercommand, results.dependencies, { stdio: 'inherit' });
|
|
87
|
+
}
|
|
88
|
+
if (results.devDependencies.length > 0) {
|
|
89
|
+
results.devDependencies.unshift('--save-dev');
|
|
90
|
+
results.devDependencies.unshift('install');
|
|
91
|
+
spawn.sync(usercommand, results.devDependencies, { stdio: 'inherit' });
|
|
92
|
+
}
|
|
93
|
+
});
|
|
63
94
|
|
|
64
|
-
spawn.sync(usercommand, args, { stdio: 'inherit' });
|
|
65
|
-
return;
|
|
66
|
-
} else {
|
|
67
|
-
logger.error(`No install script found with name ${name} in global or local package.json`);
|
|
68
|
-
}
|
|
69
95
|
return;
|
|
70
96
|
}
|
|
97
|
+
|
|
71
98
|
if (name === undefined || name.length === 0) {
|
|
72
99
|
spawn.sync(usercommand, ['install'], { stdio: 'inherit' });
|
|
73
100
|
return;
|
|
@@ -0,0 +1,218 @@
|
|
|
1
|
+
import { logger } from '../common/logger';
|
|
2
|
+
import { util } from '../common';
|
|
3
|
+
import { promises as fsPromises } from 'fs';
|
|
4
|
+
import path from 'path';
|
|
5
|
+
import readline from 'readline';
|
|
6
|
+
import chalk from 'chalk';
|
|
7
|
+
|
|
8
|
+
const codeEmoji = '</>';
|
|
9
|
+
const dirEmpoji = '📁 ';
|
|
10
|
+
|
|
11
|
+
const openVSCodeInDirectory = (directory: string) => {
|
|
12
|
+
const spawn = require('child_process').spawn;
|
|
13
|
+
// Open the selected directory in VS Code
|
|
14
|
+
spawn(process.platform === 'win32' ? 'code.cmd' : 'code', [directory], {
|
|
15
|
+
stdio: 'inherit',
|
|
16
|
+
shell: true
|
|
17
|
+
});
|
|
18
|
+
};
|
|
19
|
+
|
|
20
|
+
const displayOptions = (location: string) => {
|
|
21
|
+
const fs = require('fs');
|
|
22
|
+
const rootPackageJsonPath = path.join(location, 'package.json');
|
|
23
|
+
const hasPackageJson = fs.existsSync(rootPackageJsonPath);
|
|
24
|
+
if (hasPackageJson) {
|
|
25
|
+
openVSCodeInDirectory(location);
|
|
26
|
+
return;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
const childDirs = fs.readdirSync(location).filter((file: string) => {
|
|
30
|
+
return fs.statSync(path.join(location, file)).isDirectory();
|
|
31
|
+
});
|
|
32
|
+
|
|
33
|
+
const options = childDirs.map((dir: string, index: number) => {
|
|
34
|
+
const newPath = path.join(location, dir);
|
|
35
|
+
const packageJsonPath = path.join(newPath, 'package.json');
|
|
36
|
+
const hasPackageJson = fs.existsSync(packageJsonPath);
|
|
37
|
+
return { path: path.join(location, dir), label: `[${index + 1}] ${dir}`, hasPackageJson: hasPackageJson, emoji: hasPackageJson ? codeEmoji : dirEmpoji };
|
|
38
|
+
});
|
|
39
|
+
|
|
40
|
+
logger.log(`${dirEmpoji} Directories in current location:`, chalk.cyan);
|
|
41
|
+
options.forEach((option) => {
|
|
42
|
+
logger.log(`${option.emoji} ${option.label}`);
|
|
43
|
+
});
|
|
44
|
+
|
|
45
|
+
const rl = readline.createInterface({
|
|
46
|
+
input: process.stdin,
|
|
47
|
+
output: process.stdout
|
|
48
|
+
});
|
|
49
|
+
|
|
50
|
+
rl.question('Enter the number of the directory to select or 0 to cancel (append -vs to force open in VS Code): ', (answer) => {
|
|
51
|
+
const trimmed = answer.trim();
|
|
52
|
+
const vsFlag = trimmed.endsWith('-vs');
|
|
53
|
+
const numPart = vsFlag ? trimmed.replace(/-vs$/i, '').trim() : trimmed;
|
|
54
|
+
const idx = parseInt(numPart, 10) - 1;
|
|
55
|
+
|
|
56
|
+
if (idx >= 0 && idx < childDirs.length) {
|
|
57
|
+
const newPath = options[idx].path;
|
|
58
|
+
if (options[idx].hasPackageJson || vsFlag) {
|
|
59
|
+
// Valid selection or forced VS Code open
|
|
60
|
+
openVSCodeInDirectory(newPath);
|
|
61
|
+
rl.close();
|
|
62
|
+
return;
|
|
63
|
+
} else {
|
|
64
|
+
rl.close();
|
|
65
|
+
// Recursively prompt in the new directory
|
|
66
|
+
displayOptions(newPath);
|
|
67
|
+
return;
|
|
68
|
+
}
|
|
69
|
+
} else if (numPart === '0') {
|
|
70
|
+
if (vsFlag) {
|
|
71
|
+
openVSCodeInDirectory(location);
|
|
72
|
+
}
|
|
73
|
+
rl.close();
|
|
74
|
+
return;
|
|
75
|
+
} else {
|
|
76
|
+
console.log('Invalid selection.');
|
|
77
|
+
rl.close();
|
|
78
|
+
return;
|
|
79
|
+
}
|
|
80
|
+
});
|
|
81
|
+
};
|
|
82
|
+
|
|
83
|
+
const findDirectory = (location: string, chars: string): Promise<string | undefined> => {
|
|
84
|
+
const fs = require('fs');
|
|
85
|
+
const readline = require('readline');
|
|
86
|
+
const childDirs = fs.readdirSync(location).filter((file: string) => {
|
|
87
|
+
return fs.statSync(path.join(location, file)).isDirectory();
|
|
88
|
+
});
|
|
89
|
+
|
|
90
|
+
// Find all matches (case-insensitive, must start with chars)
|
|
91
|
+
const matches = childDirs.filter((dir: string) => dir.toLowerCase().startsWith(chars.toLowerCase()));
|
|
92
|
+
|
|
93
|
+
if (matches.length === 0) {
|
|
94
|
+
return Promise.resolve(undefined);
|
|
95
|
+
} else if (matches.length === 1) {
|
|
96
|
+
return new Promise((resolve) => resolve(path.join(location, matches[0])));
|
|
97
|
+
} else {
|
|
98
|
+
// Multiple matches, prompt user to select with emoji and label
|
|
99
|
+
console.log('Multiple directories match your input:');
|
|
100
|
+
const options = matches.map((dir: string, idx: number) => {
|
|
101
|
+
const newPath = path.join(location, dir);
|
|
102
|
+
const packageJsonPath = path.join(newPath, 'package.json');
|
|
103
|
+
const hasPackageJson = fs.existsSync(packageJsonPath);
|
|
104
|
+
return {
|
|
105
|
+
path: newPath,
|
|
106
|
+
label: `[${idx + 1}] ${dir}`,
|
|
107
|
+
emoji: hasPackageJson ? codeEmoji : dirEmpoji
|
|
108
|
+
};
|
|
109
|
+
});
|
|
110
|
+
options.forEach((option) => {
|
|
111
|
+
console.log(`${option.emoji} ${option.label}`);
|
|
112
|
+
});
|
|
113
|
+
const rl = readline.createInterface({
|
|
114
|
+
input: process.stdin,
|
|
115
|
+
output: process.stdout
|
|
116
|
+
});
|
|
117
|
+
return new Promise<string | undefined>((resolve) => {
|
|
118
|
+
rl.question('Enter the number to select or 0 to cancel (append -vs to force open in VS Code): ', (answer: string) => {
|
|
119
|
+
const trimmed = answer.trim();
|
|
120
|
+
const vsFlag = trimmed.endsWith('-vs');
|
|
121
|
+
const numPart = vsFlag ? trimmed.replace(/-vs$/i, '').trim() : trimmed;
|
|
122
|
+
const idx = parseInt(numPart, 10) - 1;
|
|
123
|
+
if (idx >= 0 && idx < options.length) {
|
|
124
|
+
if (vsFlag) {
|
|
125
|
+
openVSCodeInDirectory(options[idx].path);
|
|
126
|
+
rl.close();
|
|
127
|
+
resolve('***');
|
|
128
|
+
return;
|
|
129
|
+
}
|
|
130
|
+
rl.close();
|
|
131
|
+
resolve(options[idx].path);
|
|
132
|
+
return;
|
|
133
|
+
} else if (numPart === '0') {
|
|
134
|
+
if (vsFlag) {
|
|
135
|
+
openVSCodeInDirectory(location);
|
|
136
|
+
rl.close();
|
|
137
|
+
resolve('***');
|
|
138
|
+
return;
|
|
139
|
+
}
|
|
140
|
+
rl.close();
|
|
141
|
+
resolve('***');
|
|
142
|
+
return;
|
|
143
|
+
} else {
|
|
144
|
+
console.log('Invalid selection.');
|
|
145
|
+
rl.close();
|
|
146
|
+
resolve(undefined);
|
|
147
|
+
return;
|
|
148
|
+
}
|
|
149
|
+
});
|
|
150
|
+
});
|
|
151
|
+
}
|
|
152
|
+
};
|
|
153
|
+
|
|
154
|
+
export const getRepo = async (): Promise<string | undefined> => {
|
|
155
|
+
const globalPath = util.getGlobalConfigPaths();
|
|
156
|
+
const fileExists = await util.checkIfFileExistsAsync(globalPath.configPath, true);
|
|
157
|
+
if (!fileExists) {
|
|
158
|
+
return;
|
|
159
|
+
}
|
|
160
|
+
const data = await fsPromises.readFile(globalPath.configPath, 'utf-8');
|
|
161
|
+
const config = JSON.parse(data);
|
|
162
|
+
const name = 'repositoryDirectory';
|
|
163
|
+
if (config && typeof config === 'object' && config[name]) {
|
|
164
|
+
const repo = config[name];
|
|
165
|
+
return repo;
|
|
166
|
+
} else {
|
|
167
|
+
return;
|
|
168
|
+
}
|
|
169
|
+
};
|
|
170
|
+
|
|
171
|
+
export const SetRepo = async () => {
|
|
172
|
+
const globalPath = util.getGlobalConfigPaths();
|
|
173
|
+
const fileExists = await util.checkIfFileExistsAsync(globalPath.configPath, true);
|
|
174
|
+
if (!fileExists) {
|
|
175
|
+
await util.initGlobalPackageJsonWithDefaults(true);
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
const local = path.join(process.cwd());
|
|
179
|
+
logger.info(`Setting repository to: ${local}`);
|
|
180
|
+
|
|
181
|
+
const data = await fsPromises.readFile(globalPath.configPath, 'utf-8');
|
|
182
|
+
const packageJson = JSON.parse(data);
|
|
183
|
+
|
|
184
|
+
packageJson.repositoryDirectory = local;
|
|
185
|
+
await fsPromises.writeFile(globalPath.configPath, JSON.stringify(packageJson, null, 2), 'utf-8');
|
|
186
|
+
};
|
|
187
|
+
|
|
188
|
+
export const goToRepoFromProject = async (args?: string[]) => {
|
|
189
|
+
logger.info('Looking for repository from global package.json based on project shortcut...');
|
|
190
|
+
};
|
|
191
|
+
|
|
192
|
+
export const goToRepo = async (args?: string[]) => {
|
|
193
|
+
const repo = await getRepo();
|
|
194
|
+
|
|
195
|
+
if (repo === undefined) {
|
|
196
|
+
logger.error('No repository set. Please run " set-repo" first to set the repository location.');
|
|
197
|
+
return;
|
|
198
|
+
}
|
|
199
|
+
|
|
200
|
+
if (!args || args.length === 0) {
|
|
201
|
+
displayOptions(repo);
|
|
202
|
+
return;
|
|
203
|
+
}
|
|
204
|
+
|
|
205
|
+
let targetPath = repo;
|
|
206
|
+
for (const arg of args) {
|
|
207
|
+
targetPath = await findDirectory(targetPath, arg);
|
|
208
|
+
if (targetPath === undefined) {
|
|
209
|
+
logger.error(`Could not find directory matching "${arg}". Exiting.`);
|
|
210
|
+
return;
|
|
211
|
+
} else if (targetPath.endsWith('***')) {
|
|
212
|
+
// Check if VS Code was opened (user used -vs)
|
|
213
|
+
// If the directory was opened, do not log error, just exit
|
|
214
|
+
return;
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
displayOptions(targetPath);
|
|
218
|
+
};
|
package/src/common/logger.ts
CHANGED
|
@@ -21,8 +21,12 @@ class Logger {
|
|
|
21
21
|
this.newLine();
|
|
22
22
|
}
|
|
23
23
|
|
|
24
|
-
public log(message: string) {
|
|
25
|
-
|
|
24
|
+
public log(message: string, color?: chalk.Chalk) {
|
|
25
|
+
if (color) {
|
|
26
|
+
this.logger(color(message));
|
|
27
|
+
} else {
|
|
28
|
+
this.logger(message);
|
|
29
|
+
}
|
|
26
30
|
}
|
|
27
31
|
|
|
28
32
|
public warning(message: string) {
|
package/src/common/util.ts
CHANGED
|
@@ -1,23 +1,24 @@
|
|
|
1
1
|
import { promises as fsPromises } from 'fs';
|
|
2
|
+
import fs from 'fs';
|
|
2
3
|
import os from 'os';
|
|
3
4
|
import path from 'path';
|
|
4
5
|
import { logger } from './logger';
|
|
5
6
|
|
|
6
7
|
export async function checkIfFileExistsAsync(filename, includeError = true) {
|
|
7
|
-
|
|
8
|
-
await fsPromises.readFile(filename, 'utf-8');
|
|
9
|
-
return true;
|
|
10
|
-
} catch (err) {
|
|
8
|
+
if (!fs.existsSync(filename)) {
|
|
11
9
|
if (includeError) {
|
|
12
|
-
|
|
10
|
+
logger.error(`No ${filename} found!`);
|
|
13
11
|
}
|
|
14
|
-
return
|
|
12
|
+
return false;
|
|
15
13
|
}
|
|
14
|
+
|
|
15
|
+
return true;
|
|
16
16
|
}
|
|
17
17
|
|
|
18
18
|
export function getGlobalConfigPaths() {
|
|
19
19
|
const configDir = path.join(os.homedir(), '.spfx-toolkit');
|
|
20
20
|
const configPath = path.join(configDir, 'package.json');
|
|
21
|
+
|
|
21
22
|
return { configDir, configPath };
|
|
22
23
|
}
|
|
23
24
|
|
|
@@ -29,8 +30,12 @@ export async function isUsingGulp(): Promise<boolean> {
|
|
|
29
30
|
async function ensureGlobalPackageJsonExists() {
|
|
30
31
|
const { configDir, configPath } = getGlobalConfigPaths();
|
|
31
32
|
const exists = await checkIfFileExistsAsync(configPath, false);
|
|
33
|
+
|
|
32
34
|
if (!exists) {
|
|
35
|
+
// Create the directory if it doesn't exist and then create an empty package.json
|
|
36
|
+
|
|
33
37
|
await fsPromises.mkdir(configDir, { recursive: true });
|
|
38
|
+
|
|
34
39
|
await fsPromises.writeFile(configPath, JSON.stringify({ scripts: {} }, null, 2), 'utf-8');
|
|
35
40
|
}
|
|
36
41
|
}
|
|
@@ -57,8 +62,22 @@ export async function initGlobalPackageJsonWithDefaults(force?: boolean) {
|
|
|
57
62
|
'bundle:gulp': 'heft test --clean --production && heft package-solution --production',
|
|
58
63
|
'bundle:heft': 'heft build --clean && heft package',
|
|
59
64
|
'serve:heft': 'heft build-watch --serve',
|
|
60
|
-
'serve:gulp': 'gulp serve'
|
|
61
|
-
|
|
65
|
+
'serve:gulp': 'gulp serve'
|
|
66
|
+
};
|
|
67
|
+
|
|
68
|
+
const defaultPackages = {
|
|
69
|
+
pnp: {
|
|
70
|
+
dependencies: ['@pnp/graph', '@pnp/core', '@pnp/odata', '@pnp/queryable', '@pnp/sp']
|
|
71
|
+
},
|
|
72
|
+
'react-query': {
|
|
73
|
+
dependencies: [
|
|
74
|
+
'@tanstack/react-query@4',
|
|
75
|
+
'@tanstack/query-async-storage-persister@4',
|
|
76
|
+
'@tanstack/query-persist-client-core@4',
|
|
77
|
+
'@tanstack/query-sync-storage-persister@5'
|
|
78
|
+
],
|
|
79
|
+
devDependencies: ['@tanstack/react-query-devtools@4']
|
|
80
|
+
}
|
|
62
81
|
};
|
|
63
82
|
|
|
64
83
|
const packageJsonContent = await fsPromises.readFile(configPath, 'utf-8');
|
|
@@ -72,5 +91,14 @@ export async function initGlobalPackageJsonWithDefaults(force?: boolean) {
|
|
|
72
91
|
}
|
|
73
92
|
}
|
|
74
93
|
|
|
94
|
+
// packageJson.packages
|
|
95
|
+
packageJson.packages = packageJson.packages || {};
|
|
96
|
+
for (const [key, value] of Object.entries(defaultPackages)) {
|
|
97
|
+
if (force || !(key in packageJson.packages)) {
|
|
98
|
+
packageJson.packages[key] = value;
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
|
|
75
102
|
await fsPromises.writeFile(configPath, JSON.stringify(packageJson, null, 2), 'utf-8');
|
|
103
|
+
logger.success(`Global package.json initialized at ${configPath}`);
|
|
76
104
|
}
|
package/src/index.ts
CHANGED
|
@@ -12,7 +12,7 @@ program
|
|
|
12
12
|
.name('Matt Schauer SPFx Toolkit')
|
|
13
13
|
.description('CLI to help with SPFx development')
|
|
14
14
|
.addHelpText('beforeAll', chalk.blueBright('Developed by Matt Schauer'))
|
|
15
|
-
.version('1.0.
|
|
15
|
+
.version('1.0.25');
|
|
16
16
|
|
|
17
17
|
program
|
|
18
18
|
.command('add-alias')
|
|
@@ -29,6 +29,26 @@ program
|
|
|
29
29
|
commands.alias.clearAlias(defaultToolkitName);
|
|
30
30
|
});
|
|
31
31
|
|
|
32
|
+
program
|
|
33
|
+
.command('set-repo')
|
|
34
|
+
.description('Set current folder as the default repo location')
|
|
35
|
+
.action(() => {
|
|
36
|
+
commands.repo.SetRepo();
|
|
37
|
+
});
|
|
38
|
+
|
|
39
|
+
program
|
|
40
|
+
.command('repo [args...]')
|
|
41
|
+
.description('Go to repository location')
|
|
42
|
+
.option('-p, --project', 'If set will look in global package.json for matching shortcut to repository')
|
|
43
|
+
.action((args, options) => {
|
|
44
|
+
console.log('options:', options);
|
|
45
|
+
if (options.project) {
|
|
46
|
+
commands.repo.goToRepoFromProject(Array.isArray(args) ? args : []);
|
|
47
|
+
return;
|
|
48
|
+
}
|
|
49
|
+
commands.repo.goToRepo(Array.isArray(args) ? args : []);
|
|
50
|
+
});
|
|
51
|
+
|
|
32
52
|
program
|
|
33
53
|
.command('serve')
|
|
34
54
|
.alias('s')
|
|
@@ -78,11 +98,10 @@ program
|
|
|
78
98
|
});
|
|
79
99
|
|
|
80
100
|
program
|
|
81
|
-
.command('install-
|
|
82
|
-
.alias('
|
|
83
|
-
.description('Run an
|
|
84
|
-
.addArgument(new commander.Argument('<name>', '
|
|
85
|
-
|
|
101
|
+
.command('install-packages')
|
|
102
|
+
.alias('ips')
|
|
103
|
+
.description('Run an installer package from global package.json by name')
|
|
104
|
+
.addArgument(new commander.Argument('<name>', 'package name in global config to install'))
|
|
86
105
|
.action((name) => {
|
|
87
106
|
commands.installer.install(name, true);
|
|
88
107
|
});
|
|
Binary file
|