@modern-js/utils 1.1.4 → 1.1.6
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/CHANGELOG.md +12 -0
- package/dist/js/modern/getPackageManager.js +15 -2
- package/dist/js/modern/index.js +2 -1
- package/dist/js/modern/nodeEnv.js +31 -0
- package/dist/js/modern/watch.js +1 -1
- package/dist/js/node/getPackageManager.js +17 -2
- package/dist/js/node/index.js +14 -0
- package/dist/js/node/nodeEnv.js +45 -0
- package/dist/js/node/watch.js +1 -1
- package/dist/js/treeshaking/getPackageManager.js +91 -15
- package/dist/js/treeshaking/index.js +2 -1
- package/dist/js/treeshaking/nodeEnv.js +108 -0
- package/dist/js/treeshaking/watch.js +1 -1
- package/dist/types/getPackageManager.d.ts +1 -1
- package/dist/types/index.d.ts +2 -1
- package/dist/types/nodeEnv.d.ts +3 -0
- package/dist/types/watch.d.ts +1 -1
- package/package.json +5 -4
- package/src/getPackageManager.ts +12 -2
- package/src/index.ts +1 -0
- package/src/nodeEnv.ts +28 -0
- package/src/watch.ts +2 -2
- package/tests/index.test.ts +16 -0
package/CHANGELOG.md
CHANGED
@@ -1,10 +1,15 @@
|
|
1
1
|
import os from 'os';
|
2
2
|
import path from 'path';
|
3
3
|
import fs from 'fs-extra';
|
4
|
-
|
4
|
+
import { canUsePnpm, canUseYarn } from "./nodeEnv";
|
5
|
+
const MAX_TIMES = 5;
|
6
|
+
export async function getPackageManager(cwd = process.cwd()) {
|
5
7
|
let appDirectory = cwd;
|
8
|
+
let times = 0;
|
9
|
+
|
10
|
+
while (os.homedir() !== appDirectory && times < MAX_TIMES) {
|
11
|
+
times++;
|
6
12
|
|
7
|
-
while (os.homedir() !== appDirectory) {
|
8
13
|
if (fs.existsSync(path.resolve(appDirectory, 'pnpm-lock.yaml'))) {
|
9
14
|
return 'pnpm';
|
10
15
|
}
|
@@ -20,5 +25,13 @@ export function getPackageManager(cwd = process.cwd()) {
|
|
20
25
|
appDirectory = path.join(appDirectory, '..');
|
21
26
|
}
|
22
27
|
|
28
|
+
if (await canUsePnpm()) {
|
29
|
+
return 'pnpm';
|
30
|
+
}
|
31
|
+
|
32
|
+
if (await canUseYarn()) {
|
33
|
+
return 'yarn';
|
34
|
+
}
|
35
|
+
|
23
36
|
return 'npm';
|
24
37
|
}
|
package/dist/js/modern/index.js
CHANGED
@@ -0,0 +1,31 @@
|
|
1
|
+
import execa from 'execa';
|
2
|
+
export async function canUseNpm() {
|
3
|
+
try {
|
4
|
+
await execa('npm', ['--version'], {
|
5
|
+
env: process.env
|
6
|
+
});
|
7
|
+
return true;
|
8
|
+
} catch (e) {
|
9
|
+
return false;
|
10
|
+
}
|
11
|
+
}
|
12
|
+
export async function canUseYarn() {
|
13
|
+
try {
|
14
|
+
await execa('yarn', ['--version'], {
|
15
|
+
env: process.env
|
16
|
+
});
|
17
|
+
return true;
|
18
|
+
} catch (e) {
|
19
|
+
return false;
|
20
|
+
}
|
21
|
+
}
|
22
|
+
export async function canUsePnpm() {
|
23
|
+
try {
|
24
|
+
await execa('pnpm', ['--version'], {
|
25
|
+
env: process.env
|
26
|
+
});
|
27
|
+
return true;
|
28
|
+
} catch (e) {
|
29
|
+
return false;
|
30
|
+
}
|
31
|
+
}
|
package/dist/js/modern/watch.js
CHANGED
@@ -8,7 +8,7 @@ export const WatchChangeType = {
|
|
8
8
|
};
|
9
9
|
export const watch = (watchDir, runTask, ignored = []) => {
|
10
10
|
let ready = false;
|
11
|
-
const watcher = chokidar.watch(
|
11
|
+
const watcher = chokidar.watch(watchDir, {
|
12
12
|
ignored
|
13
13
|
});
|
14
14
|
watcher.on('ready', () => ready = true);
|
@@ -11,12 +11,19 @@ var _path = _interopRequireDefault(require("path"));
|
|
11
11
|
|
12
12
|
var _fsExtra = _interopRequireDefault(require("fs-extra"));
|
13
13
|
|
14
|
+
var _nodeEnv = require("./nodeEnv");
|
15
|
+
|
14
16
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
15
17
|
|
16
|
-
|
18
|
+
const MAX_TIMES = 5;
|
19
|
+
|
20
|
+
async function getPackageManager(cwd = process.cwd()) {
|
17
21
|
let appDirectory = cwd;
|
22
|
+
let times = 0;
|
23
|
+
|
24
|
+
while (_os.default.homedir() !== appDirectory && times < MAX_TIMES) {
|
25
|
+
times++;
|
18
26
|
|
19
|
-
while (_os.default.homedir() !== appDirectory) {
|
20
27
|
if (_fsExtra.default.existsSync(_path.default.resolve(appDirectory, 'pnpm-lock.yaml'))) {
|
21
28
|
return 'pnpm';
|
22
29
|
}
|
@@ -32,5 +39,13 @@ function getPackageManager(cwd = process.cwd()) {
|
|
32
39
|
appDirectory = _path.default.join(appDirectory, '..');
|
33
40
|
}
|
34
41
|
|
42
|
+
if (await (0, _nodeEnv.canUsePnpm)()) {
|
43
|
+
return 'pnpm';
|
44
|
+
}
|
45
|
+
|
46
|
+
if (await (0, _nodeEnv.canUseYarn)()) {
|
47
|
+
return 'yarn';
|
48
|
+
}
|
49
|
+
|
35
50
|
return 'npm';
|
36
51
|
}
|
package/dist/js/node/index.js
CHANGED
@@ -418,6 +418,20 @@ Object.keys(_watch).forEach(function (key) {
|
|
418
418
|
});
|
419
419
|
});
|
420
420
|
|
421
|
+
var _nodeEnv = require("./nodeEnv");
|
422
|
+
|
423
|
+
Object.keys(_nodeEnv).forEach(function (key) {
|
424
|
+
if (key === "default" || key === "__esModule") return;
|
425
|
+
if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
|
426
|
+
if (key in exports && exports[key] === _nodeEnv[key]) return;
|
427
|
+
Object.defineProperty(exports, key, {
|
428
|
+
enumerable: true,
|
429
|
+
get: function () {
|
430
|
+
return _nodeEnv[key];
|
431
|
+
}
|
432
|
+
});
|
433
|
+
});
|
434
|
+
|
421
435
|
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
422
436
|
|
423
437
|
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
@@ -0,0 +1,45 @@
|
|
1
|
+
"use strict";
|
2
|
+
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
4
|
+
value: true
|
5
|
+
});
|
6
|
+
exports.canUseNpm = canUseNpm;
|
7
|
+
exports.canUsePnpm = canUsePnpm;
|
8
|
+
exports.canUseYarn = canUseYarn;
|
9
|
+
|
10
|
+
var _execa = _interopRequireDefault(require("execa"));
|
11
|
+
|
12
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
13
|
+
|
14
|
+
async function canUseNpm() {
|
15
|
+
try {
|
16
|
+
await (0, _execa.default)('npm', ['--version'], {
|
17
|
+
env: process.env
|
18
|
+
});
|
19
|
+
return true;
|
20
|
+
} catch (e) {
|
21
|
+
return false;
|
22
|
+
}
|
23
|
+
}
|
24
|
+
|
25
|
+
async function canUseYarn() {
|
26
|
+
try {
|
27
|
+
await (0, _execa.default)('yarn', ['--version'], {
|
28
|
+
env: process.env
|
29
|
+
});
|
30
|
+
return true;
|
31
|
+
} catch (e) {
|
32
|
+
return false;
|
33
|
+
}
|
34
|
+
}
|
35
|
+
|
36
|
+
async function canUsePnpm() {
|
37
|
+
try {
|
38
|
+
await (0, _execa.default)('pnpm', ['--version'], {
|
39
|
+
env: process.env
|
40
|
+
});
|
41
|
+
return true;
|
42
|
+
} catch (e) {
|
43
|
+
return false;
|
44
|
+
}
|
45
|
+
}
|
package/dist/js/node/watch.js
CHANGED
@@ -24,7 +24,7 @@ exports.WatchChangeType = WatchChangeType;
|
|
24
24
|
|
25
25
|
const watch = (watchDir, runTask, ignored = []) => {
|
26
26
|
let ready = false;
|
27
|
-
const watcher = chokidar.watch(
|
27
|
+
const watcher = chokidar.watch(watchDir, {
|
28
28
|
ignored
|
29
29
|
});
|
30
30
|
watcher.on('ready', () => ready = true);
|
@@ -1,25 +1,101 @@
|
|
1
|
+
import _regeneratorRuntime from "@babel/runtime/regenerator";
|
2
|
+
|
3
|
+
function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }
|
4
|
+
|
5
|
+
function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }
|
6
|
+
|
1
7
|
import os from 'os';
|
2
8
|
import path from 'path';
|
3
9
|
import fs from 'fs-extra';
|
10
|
+
import { canUsePnpm, canUseYarn } from "./nodeEnv";
|
11
|
+
var MAX_TIMES = 5;
|
4
12
|
export function getPackageManager() {
|
5
|
-
|
6
|
-
|
13
|
+
return _getPackageManager.apply(this, arguments);
|
14
|
+
}
|
15
|
+
|
16
|
+
function _getPackageManager() {
|
17
|
+
_getPackageManager = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee() {
|
18
|
+
var cwd,
|
19
|
+
appDirectory,
|
20
|
+
times,
|
21
|
+
_args = arguments;
|
22
|
+
return _regeneratorRuntime.wrap(function _callee$(_context) {
|
23
|
+
while (1) {
|
24
|
+
switch (_context.prev = _context.next) {
|
25
|
+
case 0:
|
26
|
+
cwd = _args.length > 0 && _args[0] !== undefined ? _args[0] : process.cwd();
|
27
|
+
appDirectory = cwd;
|
28
|
+
times = 0;
|
29
|
+
|
30
|
+
case 3:
|
31
|
+
if (!(os.homedir() !== appDirectory && times < MAX_TIMES)) {
|
32
|
+
_context.next = 14;
|
33
|
+
break;
|
34
|
+
}
|
35
|
+
|
36
|
+
times++;
|
37
|
+
|
38
|
+
if (!fs.existsSync(path.resolve(appDirectory, 'pnpm-lock.yaml'))) {
|
39
|
+
_context.next = 7;
|
40
|
+
break;
|
41
|
+
}
|
42
|
+
|
43
|
+
return _context.abrupt("return", 'pnpm');
|
44
|
+
|
45
|
+
case 7:
|
46
|
+
if (!fs.existsSync(path.resolve(appDirectory, 'yarn.lock'))) {
|
47
|
+
_context.next = 9;
|
48
|
+
break;
|
49
|
+
}
|
50
|
+
|
51
|
+
return _context.abrupt("return", 'yarn');
|
52
|
+
|
53
|
+
case 9:
|
54
|
+
if (!fs.existsSync(path.resolve(appDirectory, 'package-lock.json'))) {
|
55
|
+
_context.next = 11;
|
56
|
+
break;
|
57
|
+
}
|
58
|
+
|
59
|
+
return _context.abrupt("return", 'npm');
|
60
|
+
|
61
|
+
case 11:
|
62
|
+
appDirectory = path.join(appDirectory, '..');
|
63
|
+
_context.next = 3;
|
64
|
+
break;
|
65
|
+
|
66
|
+
case 14:
|
67
|
+
_context.next = 16;
|
68
|
+
return canUsePnpm();
|
69
|
+
|
70
|
+
case 16:
|
71
|
+
if (!_context.sent) {
|
72
|
+
_context.next = 18;
|
73
|
+
break;
|
74
|
+
}
|
75
|
+
|
76
|
+
return _context.abrupt("return", 'pnpm');
|
7
77
|
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
}
|
78
|
+
case 18:
|
79
|
+
_context.next = 20;
|
80
|
+
return canUseYarn();
|
12
81
|
|
13
|
-
|
14
|
-
|
15
|
-
|
82
|
+
case 20:
|
83
|
+
if (!_context.sent) {
|
84
|
+
_context.next = 22;
|
85
|
+
break;
|
86
|
+
}
|
16
87
|
|
17
|
-
|
18
|
-
return 'npm';
|
19
|
-
}
|
88
|
+
return _context.abrupt("return", 'yarn');
|
20
89
|
|
21
|
-
|
22
|
-
|
90
|
+
case 22:
|
91
|
+
return _context.abrupt("return", 'npm');
|
23
92
|
|
24
|
-
|
93
|
+
case 23:
|
94
|
+
case "end":
|
95
|
+
return _context.stop();
|
96
|
+
}
|
97
|
+
}
|
98
|
+
}, _callee);
|
99
|
+
}));
|
100
|
+
return _getPackageManager.apply(this, arguments);
|
25
101
|
}
|
@@ -0,0 +1,108 @@
|
|
1
|
+
import _regeneratorRuntime from "@babel/runtime/regenerator";
|
2
|
+
|
3
|
+
function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }
|
4
|
+
|
5
|
+
function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }
|
6
|
+
|
7
|
+
import execa from 'execa';
|
8
|
+
export function canUseNpm() {
|
9
|
+
return _canUseNpm.apply(this, arguments);
|
10
|
+
}
|
11
|
+
|
12
|
+
function _canUseNpm() {
|
13
|
+
_canUseNpm = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee() {
|
14
|
+
return _regeneratorRuntime.wrap(function _callee$(_context) {
|
15
|
+
while (1) {
|
16
|
+
switch (_context.prev = _context.next) {
|
17
|
+
case 0:
|
18
|
+
_context.prev = 0;
|
19
|
+
_context.next = 3;
|
20
|
+
return execa('npm', ['--version'], {
|
21
|
+
env: process.env
|
22
|
+
});
|
23
|
+
|
24
|
+
case 3:
|
25
|
+
return _context.abrupt("return", true);
|
26
|
+
|
27
|
+
case 6:
|
28
|
+
_context.prev = 6;
|
29
|
+
_context.t0 = _context["catch"](0);
|
30
|
+
return _context.abrupt("return", false);
|
31
|
+
|
32
|
+
case 9:
|
33
|
+
case "end":
|
34
|
+
return _context.stop();
|
35
|
+
}
|
36
|
+
}
|
37
|
+
}, _callee, null, [[0, 6]]);
|
38
|
+
}));
|
39
|
+
return _canUseNpm.apply(this, arguments);
|
40
|
+
}
|
41
|
+
|
42
|
+
export function canUseYarn() {
|
43
|
+
return _canUseYarn.apply(this, arguments);
|
44
|
+
}
|
45
|
+
|
46
|
+
function _canUseYarn() {
|
47
|
+
_canUseYarn = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee2() {
|
48
|
+
return _regeneratorRuntime.wrap(function _callee2$(_context2) {
|
49
|
+
while (1) {
|
50
|
+
switch (_context2.prev = _context2.next) {
|
51
|
+
case 0:
|
52
|
+
_context2.prev = 0;
|
53
|
+
_context2.next = 3;
|
54
|
+
return execa('yarn', ['--version'], {
|
55
|
+
env: process.env
|
56
|
+
});
|
57
|
+
|
58
|
+
case 3:
|
59
|
+
return _context2.abrupt("return", true);
|
60
|
+
|
61
|
+
case 6:
|
62
|
+
_context2.prev = 6;
|
63
|
+
_context2.t0 = _context2["catch"](0);
|
64
|
+
return _context2.abrupt("return", false);
|
65
|
+
|
66
|
+
case 9:
|
67
|
+
case "end":
|
68
|
+
return _context2.stop();
|
69
|
+
}
|
70
|
+
}
|
71
|
+
}, _callee2, null, [[0, 6]]);
|
72
|
+
}));
|
73
|
+
return _canUseYarn.apply(this, arguments);
|
74
|
+
}
|
75
|
+
|
76
|
+
export function canUsePnpm() {
|
77
|
+
return _canUsePnpm.apply(this, arguments);
|
78
|
+
}
|
79
|
+
|
80
|
+
function _canUsePnpm() {
|
81
|
+
_canUsePnpm = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee3() {
|
82
|
+
return _regeneratorRuntime.wrap(function _callee3$(_context3) {
|
83
|
+
while (1) {
|
84
|
+
switch (_context3.prev = _context3.next) {
|
85
|
+
case 0:
|
86
|
+
_context3.prev = 0;
|
87
|
+
_context3.next = 3;
|
88
|
+
return execa('pnpm', ['--version'], {
|
89
|
+
env: process.env
|
90
|
+
});
|
91
|
+
|
92
|
+
case 3:
|
93
|
+
return _context3.abrupt("return", true);
|
94
|
+
|
95
|
+
case 6:
|
96
|
+
_context3.prev = 6;
|
97
|
+
_context3.t0 = _context3["catch"](0);
|
98
|
+
return _context3.abrupt("return", false);
|
99
|
+
|
100
|
+
case 9:
|
101
|
+
case "end":
|
102
|
+
return _context3.stop();
|
103
|
+
}
|
104
|
+
}
|
105
|
+
}, _callee3, null, [[0, 6]]);
|
106
|
+
}));
|
107
|
+
return _canUsePnpm.apply(this, arguments);
|
108
|
+
}
|
@@ -15,7 +15,7 @@ export var WatchChangeType = {
|
|
15
15
|
export var watch = function watch(watchDir, runTask) {
|
16
16
|
var ignored = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : [];
|
17
17
|
var ready = false;
|
18
|
-
var watcher = chokidar.watch(
|
18
|
+
var watcher = chokidar.watch(watchDir, {
|
19
19
|
ignored: ignored
|
20
20
|
});
|
21
21
|
watcher.on('ready', function () {
|
@@ -1 +1 @@
|
|
1
|
-
export declare function getPackageManager(cwd?: string): "
|
1
|
+
export declare function getPackageManager(cwd?: string): Promise<"npm" | "yarn" | "pnpm">;
|
package/dist/types/index.d.ts
CHANGED
package/dist/types/watch.d.ts
CHANGED
@@ -4,5 +4,5 @@ declare type RunTaskType = (option: {
|
|
4
4
|
changedFilePath: string;
|
5
5
|
changeType: WatchChangeTypeValueT;
|
6
6
|
}) => void | Promise<void>;
|
7
|
-
export declare const watch: (watchDir: string, runTask: RunTaskType, ignored?: string[]) => import("chokidar").FSWatcher;
|
7
|
+
export declare const watch: (watchDir: string | string[], runTask: RunTaskType, ignored?: string[]) => import("chokidar").FSWatcher;
|
8
8
|
export {};
|
package/package.json
CHANGED
@@ -11,7 +11,7 @@
|
|
11
11
|
"modern",
|
12
12
|
"modern.js"
|
13
13
|
],
|
14
|
-
"version": "1.1.
|
14
|
+
"version": "1.1.6",
|
15
15
|
"jsnext:source": "./src/index.ts",
|
16
16
|
"types": "./dist/types/index.d.ts",
|
17
17
|
"main": "./dist/js/node/index.js",
|
@@ -54,7 +54,8 @@
|
|
54
54
|
"recursive-readdir": "^2.2.2",
|
55
55
|
"strip-ansi": "6.0.0",
|
56
56
|
"upath": "^2.0.1",
|
57
|
-
"yaml": "^1.10.2"
|
57
|
+
"yaml": "^1.10.2",
|
58
|
+
"execa": "5"
|
58
59
|
},
|
59
60
|
"devDependencies": {
|
60
61
|
"@types/debug": "^4.1.7",
|
@@ -65,8 +66,8 @@
|
|
65
66
|
"@types/recursive-readdir": "^2.2.0",
|
66
67
|
"typescript": "^4",
|
67
68
|
"webpack": "^5.54.0",
|
68
|
-
"@modern-js/plugin-testing": "^1.
|
69
|
-
"@modern-js/module-tools": "^1.1.
|
69
|
+
"@modern-js/plugin-testing": "^1.2.2",
|
70
|
+
"@modern-js/module-tools": "^1.1.4"
|
70
71
|
},
|
71
72
|
"peerDependencies": {
|
72
73
|
"typescript": "^4.4.3"
|
package/src/getPackageManager.ts
CHANGED
@@ -1,10 +1,14 @@
|
|
1
1
|
import os from 'os';
|
2
2
|
import path from 'path';
|
3
3
|
import fs from 'fs-extra';
|
4
|
+
import { canUsePnpm, canUseYarn } from './nodeEnv';
|
4
5
|
|
5
|
-
|
6
|
+
const MAX_TIMES = 5;
|
7
|
+
export async function getPackageManager(cwd: string = process.cwd()) {
|
6
8
|
let appDirectory = cwd;
|
7
|
-
|
9
|
+
let times = 0;
|
10
|
+
while (os.homedir() !== appDirectory && times < MAX_TIMES) {
|
11
|
+
times++;
|
8
12
|
if (fs.existsSync(path.resolve(appDirectory, 'pnpm-lock.yaml'))) {
|
9
13
|
return 'pnpm';
|
10
14
|
}
|
@@ -16,5 +20,11 @@ export function getPackageManager(cwd: string = process.cwd()) {
|
|
16
20
|
}
|
17
21
|
appDirectory = path.join(appDirectory, '..');
|
18
22
|
}
|
23
|
+
if (await canUsePnpm()) {
|
24
|
+
return 'pnpm';
|
25
|
+
}
|
26
|
+
if (await canUseYarn()) {
|
27
|
+
return 'yarn';
|
28
|
+
}
|
19
29
|
return 'npm';
|
20
30
|
}
|
package/src/index.ts
CHANGED
package/src/nodeEnv.ts
ADDED
@@ -0,0 +1,28 @@
|
|
1
|
+
import execa from 'execa';
|
2
|
+
|
3
|
+
export async function canUseNpm() {
|
4
|
+
try {
|
5
|
+
await execa('npm', ['--version'], { env: process.env });
|
6
|
+
return true;
|
7
|
+
} catch (e) {
|
8
|
+
return false;
|
9
|
+
}
|
10
|
+
}
|
11
|
+
|
12
|
+
export async function canUseYarn() {
|
13
|
+
try {
|
14
|
+
await execa('yarn', ['--version'], { env: process.env });
|
15
|
+
return true;
|
16
|
+
} catch (e) {
|
17
|
+
return false;
|
18
|
+
}
|
19
|
+
}
|
20
|
+
|
21
|
+
export async function canUsePnpm() {
|
22
|
+
try {
|
23
|
+
await execa('pnpm', ['--version'], { env: process.env });
|
24
|
+
return true;
|
25
|
+
} catch (e) {
|
26
|
+
return false;
|
27
|
+
}
|
28
|
+
}
|
package/src/watch.ts
CHANGED
@@ -20,12 +20,12 @@ type RunTaskType = (option: {
|
|
20
20
|
}) => void | Promise<void>;
|
21
21
|
|
22
22
|
export const watch = (
|
23
|
-
watchDir: string,
|
23
|
+
watchDir: string | string[],
|
24
24
|
runTask: RunTaskType,
|
25
25
|
ignored: string[] = [],
|
26
26
|
) => {
|
27
27
|
let ready = false;
|
28
|
-
const watcher = chokidar.watch(
|
28
|
+
const watcher = chokidar.watch(watchDir, {
|
29
29
|
ignored,
|
30
30
|
});
|
31
31
|
|
@@ -0,0 +1,16 @@
|
|
1
|
+
import { canUseNpm, canUsePnpm, canUseYarn } from '@/index';
|
2
|
+
|
3
|
+
describe('test generator utils', () => {
|
4
|
+
test('test canUseNpm', async () => {
|
5
|
+
const npmAbility = await canUseNpm();
|
6
|
+
expect(typeof npmAbility === 'boolean').toBe(true);
|
7
|
+
});
|
8
|
+
test('test canUsePnpm', async () => {
|
9
|
+
const pnpmAbility = await canUsePnpm();
|
10
|
+
expect(typeof pnpmAbility === 'boolean').toBe(true);
|
11
|
+
});
|
12
|
+
test('test canUseYarn', async () => {
|
13
|
+
const yarnAbility = await canUseYarn();
|
14
|
+
expect(typeof yarnAbility === 'boolean').toBe(true);
|
15
|
+
});
|
16
|
+
});
|