@xylabs/ts-scripts-yarn3 7.1.2 → 7.1.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/dist/actions/compile.mjs +1 -1
- package/dist/actions/compile.mjs.map +1 -1
- package/dist/actions/fix.mjs +11 -3
- package/dist/actions/fix.mjs.map +1 -1
- package/dist/actions/index.mjs +12 -4
- package/dist/actions/index.mjs.map +1 -1
- package/dist/actions/lint.mjs +11 -3
- package/dist/actions/lint.mjs.map +1 -1
- package/dist/bin/package/lint-verbose.mjs +89 -0
- package/dist/bin/package/lint-verbose.mjs.map +1 -0
- package/dist/bin/xy.mjs +21 -5
- package/dist/bin/xy.mjs.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.mjs +21 -5
- package/dist/index.mjs.map +1 -1
- package/dist/xy/index.mjs +21 -5
- package/dist/xy/index.mjs.map +1 -1
- package/dist/xy/xy.mjs +21 -5
- package/dist/xy/xy.mjs.map +1 -1
- package/dist/xy/xyBuildCommands.mjs +1 -1
- package/dist/xy/xyBuildCommands.mjs.map +1 -1
- package/dist/xy/xyLintCommands.mjs +20 -4
- package/dist/xy/xyLintCommands.mjs.map +1 -1
- package/package.json +7 -6
package/dist/actions/lint.mjs
CHANGED
|
@@ -92,7 +92,11 @@ var runSteps = (name, steps, exitOnFail = true, messages) => {
|
|
|
92
92
|
};
|
|
93
93
|
|
|
94
94
|
// src/actions/lint.ts
|
|
95
|
-
var lintPackage = ({
|
|
95
|
+
var lintPackage = ({
|
|
96
|
+
pkg,
|
|
97
|
+
fix,
|
|
98
|
+
verbose
|
|
99
|
+
}) => {
|
|
96
100
|
console.log(chalk4.gray(`${fix ? "Fix" : "Lint"} [${pkg}]`));
|
|
97
101
|
const start = Date.now();
|
|
98
102
|
const result = runSteps(`${fix ? "Fix" : "Lint"} [${pkg}]`, [
|
|
@@ -100,7 +104,7 @@ var lintPackage = ({ pkg, fix }) => {
|
|
|
100
104
|
"workspace",
|
|
101
105
|
pkg,
|
|
102
106
|
"run",
|
|
103
|
-
fix ? "package-fix" : "package-lint"
|
|
107
|
+
fix ? "package-fix" : verbose ? "package-lint-verbose" : "package-lint"
|
|
104
108
|
]]
|
|
105
109
|
]);
|
|
106
110
|
console.log(chalk4.gray(`${fix ? "Fixed in" : "Linted in"} [${chalk4.magenta(((Date.now() - start) / 1e3).toFixed(2))}] ${chalk4.gray("seconds")}`));
|
|
@@ -116,7 +120,11 @@ var lint = ({
|
|
|
116
120
|
verbose,
|
|
117
121
|
incremental,
|
|
118
122
|
fix
|
|
119
|
-
}) : lintPackage({
|
|
123
|
+
}) : lintPackage({
|
|
124
|
+
pkg,
|
|
125
|
+
fix,
|
|
126
|
+
verbose
|
|
127
|
+
});
|
|
120
128
|
};
|
|
121
129
|
var lintAllPackages = ({ fix = false } = {}) => {
|
|
122
130
|
console.log(chalk4.gray(`${fix ? "Fix" : "Lint"} [All-Packages]`));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/actions/lint.ts","../../src/lib/checkResult.ts","../../src/lib/processEx.ts","../../src/lib/withError.ts","../../src/lib/withErrnoException.ts","../../src/lib/safeExit.ts","../../src/lib/runSteps.ts"],"sourcesContent":["import chalk from 'chalk'\n\nimport { runSteps } from '../lib/index.ts'\n\nexport interface LintParams {\n cache?: boolean\n fix?: boolean\n incremental?: boolean\n pkg?: string\n verbose?: boolean\n}\n\nexport interface LintPackageParams {\n pkg: string\n verbose?: boolean\n}\n\nexport const lintPackage = ({
|
|
1
|
+
{"version":3,"sources":["../../src/actions/lint.ts","../../src/lib/checkResult.ts","../../src/lib/processEx.ts","../../src/lib/withError.ts","../../src/lib/withErrnoException.ts","../../src/lib/safeExit.ts","../../src/lib/runSteps.ts"],"sourcesContent":["import chalk from 'chalk'\n\nimport { runSteps } from '../lib/index.ts'\n\nexport interface LintParams {\n cache?: boolean\n fix?: boolean\n incremental?: boolean\n pkg?: string\n verbose?: boolean\n}\n\nexport interface LintPackageParams {\n pkg: string\n verbose?: boolean\n}\n\nexport const lintPackage = ({\n pkg, fix, verbose,\n}: LintParams & Required<Pick<LintParams, 'pkg'>>) => {\n console.log(chalk.gray(`${fix ? 'Fix' : 'Lint'} [${pkg}]`))\n const start = Date.now()\n\n const result = runSteps(`${fix ? 'Fix' : 'Lint'} [${pkg}]`, [\n ['yarn', ['workspace',\n pkg,\n 'run',\n fix ? 'package-fix' : verbose ? 'package-lint-verbose' : 'package-lint',\n ]],\n ])\n console.log(chalk.gray(`${fix ? 'Fixed in' : 'Linted in'} [${chalk.magenta(((Date.now() - start) / 1000).toFixed(2))}] ${chalk.gray('seconds')}`))\n return result\n}\n\nexport const lint = ({\n pkg, verbose, incremental, fix,\n}: LintParams = {}) => {\n return pkg === undefined\n ? lintAllPackages({\n verbose, incremental, fix,\n })\n : lintPackage({\n pkg, fix, verbose,\n })\n}\n\nexport const lintAllPackages = ({ fix = false }: LintParams = {}) => {\n console.log(chalk.gray(`${fix ? 'Fix' : 'Lint'} [All-Packages]`))\n const start = Date.now()\n // const verboseOptions = verbose ? ['--verbose'] : ['--no-verbose']\n // const incrementalOptions = incremental ? ['--since', '-Ap'] : ['--parallel', '-Ap']\n const fixOptions = fix ? ['--fix'] : []\n\n const result = runSteps(`${fix ? 'Fix' : 'Lint'} [All-Packages]`, [\n ['yarn', ['eslint', '--cache', '--cache-location', '.eslintcache', '--cache-strategy', 'content', ...fixOptions]],\n ])\n console.log(chalk.gray(`${fix ? 'Fixed in' : 'Linted in'} [${chalk.magenta(((Date.now() - start) / 1000).toFixed(2))}] ${chalk.gray('seconds')}`))\n return result\n}\n","import chalk from 'chalk'\n\nexport const checkResult = (name: string, result: number, level: 'error' | 'warn' = 'error', exitOnFail = false) => {\n if (result) {\n const exiting = exitOnFail ? '[Exiting Process]' : '[Continuing]'\n const chalkFunc = level === 'error' ? chalk.red : chalk.yellow\n console[level](chalkFunc(`${name} had ${result} failures ${exiting}`))\n if (exitOnFail) {\n process.exit(result)\n }\n }\n}\n","import chalk from 'chalk'\n\nimport { withErrnoException } from './withErrnoException.ts'\nimport { withError } from './withError.ts'\n\nexport const processEx = (ex: unknown) => {\n const error = typeof ex === 'string' ? new Error(ex) : ex\n const exitCode\n = withErrnoException(error, (error) => {\n if (error.code === 'ENOENT') {\n console.error(chalk.red(`'${error.path}' not found.`))\n } else {\n console.error(chalk.red(`Errno: ${error.code}`))\n }\n return error.errno ?? -1\n })\n ?? withError(error, (error) => {\n console.error(chalk.red(`${error.name}: ${error.message}`))\n return -1\n })\n ?? (() => {\n console.error(chalk.red(`Unexpected Error: ${JSON.stringify(ex, null, 2)}`))\n return -1\n })()\n // This allows us to use a previously set exit code\n process.exit(process.exitCode ?? exitCode)\n}\n","export const withError = <T extends Error = Error>(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n ex: any,\n closure: (error: T) => number,\n predicate = (ex: T) => (!!ex.name && !!ex.message),\n) => {\n return predicate(ex as T) ? closure(ex as T) : undefined\n}\n","import { withError } from './withError.ts'\n\nexport const withErrnoException = <T extends NodeJS.ErrnoException = NodeJS.ErrnoException>(\n ex: unknown, closure: (error: T) => number,\n) => {\n return withError<T>(ex, closure, (ex: unknown) => (ex as NodeJS.ErrnoException).errno !== undefined)\n}\n","/** Catch child process a crash and returns the code */\n\nimport { processEx } from './processEx.ts'\n\nconst safeExit = (func: () => number, exitOnFail = true): number => {\n try {\n const result = func()\n if (result && exitOnFail) {\n process.exit(result)\n }\n return result\n } catch (ex) {\n return processEx(ex)\n }\n}\n\nconst safeExitAsync = async (func: () => Promise<number>, exitOnFail = true): Promise<number> => {\n try {\n const result = await func()\n if (result && exitOnFail) {\n process.exit(result)\n }\n return result\n } catch (ex) {\n return processEx(ex)\n }\n}\n\nexport { safeExit, safeExitAsync }\n","import type { SpawnSyncOptionsWithBufferEncoding } from 'node:child_process'\nimport { spawnSync } from 'node:child_process'\nimport { existsSync } from 'node:fs'\n\nimport chalk from 'chalk'\n\nimport { checkResult } from './checkResult.ts'\nimport { safeExit } from './safeExit.ts'\n\nexport type ScriptStep\n = | [/* command */ 'yarn' | 'node' | 'ts-node-script' | 'tsc' | 'jest', /* arg */ string | string[]]\n | [/* command */ string, /* arg */ string | string[], /* config */ SpawnSyncOptionsWithBufferEncoding]\n\nexport const runSteps = (name: string, steps: ScriptStep[], exitOnFail = true, messages?: string[]): number => {\n return safeExit(() => {\n const pkgName = process.env.npm_package_name\n console.log(chalk.green(`${name} [${pkgName}]`))\n let totalStatus = 0\n for (const [i, [command, args, config]] of steps.entries()) {\n if (messages?.[i]) {\n console.log(chalk.gray(messages?.[i]))\n }\n const argList = Array.isArray(args) ? args : args.split(' ')\n if (command === 'node' && !existsSync(argList[0])) {\n throw new Error(`File not found [${argList[0]}]`)\n }\n const status\n = spawnSync(command, Array.isArray(args) ? args : args.split(' '), {\n ...config,\n encoding: 'utf8',\n env: { FORCE_COLOR: '3', ...process.env },\n shell: true,\n stdio: 'inherit',\n }).status ?? 0\n checkResult(name, status, 'error', exitOnFail)\n totalStatus += status ?? 0\n }\n return totalStatus\n }, !!exitOnFail)\n}\n"],"mappings":"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","names":["chalk","chalk","ex","ex","error","chalk","chalk","chalk","chalk"]}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
|
|
3
|
+
// src/bin/package/lint-verbose.ts
|
|
4
|
+
import chalk2 from "chalk";
|
|
5
|
+
|
|
6
|
+
// src/actions/package/lint.ts
|
|
7
|
+
import { readdirSync } from "fs";
|
|
8
|
+
import path from "path";
|
|
9
|
+
import { cwd } from "process";
|
|
10
|
+
import { pathToFileURL } from "url";
|
|
11
|
+
import chalk from "chalk";
|
|
12
|
+
import { ESLint } from "eslint";
|
|
13
|
+
import { findUp } from "find-up";
|
|
14
|
+
import picomatch from "picomatch";
|
|
15
|
+
var dumpMessages = (lintResults) => {
|
|
16
|
+
const colors = ["white", "yellow", "red"];
|
|
17
|
+
const severity = ["none", "warning", "error"];
|
|
18
|
+
for (const lintResult of lintResults) {
|
|
19
|
+
if (lintResult.messages.length > 0) {
|
|
20
|
+
console.log(chalk.gray(`
|
|
21
|
+
${lintResult.filePath}`));
|
|
22
|
+
for (const message of lintResult.messages) {
|
|
23
|
+
console.log(
|
|
24
|
+
chalk.gray(` ${message.line}:${message.column}`),
|
|
25
|
+
chalk[colors[message.severity]](` ${severity[message.severity]}`),
|
|
26
|
+
chalk.white(` ${message.message}`),
|
|
27
|
+
chalk.gray(` ${message.ruleId}`)
|
|
28
|
+
);
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
};
|
|
33
|
+
async function getRootESLintConfig() {
|
|
34
|
+
const configPath = await findUp("eslint.config.mjs");
|
|
35
|
+
if (configPath === void 0) {
|
|
36
|
+
throw new Error("eslint.config.mjs not found in the monorepo");
|
|
37
|
+
}
|
|
38
|
+
return pathToFileURL(configPath);
|
|
39
|
+
}
|
|
40
|
+
function getFiles(dir, ignoreFolders) {
|
|
41
|
+
const currentDirectory = cwd();
|
|
42
|
+
const subDirectory = dir.split(currentDirectory)[1];
|
|
43
|
+
if (ignoreFolders.includes(subDirectory)) return [];
|
|
44
|
+
return readdirSync(dir, { withFileTypes: true }).flatMap((dirent) => {
|
|
45
|
+
const res = path.resolve(dir, dirent.name);
|
|
46
|
+
const relativePath = subDirectory === void 0 ? dirent.name : `${subDirectory}/${dirent.name}`;
|
|
47
|
+
const ignoreMatchers = ignoreFolders.map((pattern) => picomatch(pattern));
|
|
48
|
+
if (ignoreMatchers.some((isMatch) => isMatch(relativePath))) return [];
|
|
49
|
+
return dirent.isDirectory() ? getFiles(res, ignoreFolders) : [res];
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
var packageLint = async (fix = false, verbose = false, cache = true) => {
|
|
53
|
+
const pkg = process.env.INIT_CWD;
|
|
54
|
+
const configPath = await getRootESLintConfig();
|
|
55
|
+
const { default: eslintConfig } = await import(configPath.href);
|
|
56
|
+
const start = Date.now();
|
|
57
|
+
const ignoreFolders = ["node_modules", "dist", "packages", ".git", "build", ".yarn", ".vscode", ".github"];
|
|
58
|
+
const engine = new ESLint({
|
|
59
|
+
baseConfig: [...eslintConfig],
|
|
60
|
+
fix,
|
|
61
|
+
warnIgnored: false,
|
|
62
|
+
cache
|
|
63
|
+
});
|
|
64
|
+
const files = getFiles(cwd(), ignoreFolders);
|
|
65
|
+
if (verbose) {
|
|
66
|
+
console.log(chalk.green(`Linting ${pkg} [files = ${files.length}]`));
|
|
67
|
+
}
|
|
68
|
+
const lintResults = await engine.lintFiles(files);
|
|
69
|
+
dumpMessages(lintResults);
|
|
70
|
+
if (fix) {
|
|
71
|
+
await ESLint.outputFixes(lintResults);
|
|
72
|
+
}
|
|
73
|
+
const filesCountColor = files.length < 100 ? "green" : files.length < 1e3 ? "yellow" : "red";
|
|
74
|
+
const lintTime = Date.now() - start;
|
|
75
|
+
const lintTimeColor = lintTime < 1e3 ? "green" : lintTime < 3e3 ? "yellow" : "red";
|
|
76
|
+
console.log(chalk.white(`Linted ${chalk[filesCountColor](files.length)} files in ${chalk[lintTimeColor](lintTime)}ms`));
|
|
77
|
+
return lintResults.reduce((prev, lintResult) => prev + lintResult.errorCount, 0);
|
|
78
|
+
};
|
|
79
|
+
|
|
80
|
+
// src/bin/package/lint-verbose.ts
|
|
81
|
+
packageLint(false, true).then((value) => {
|
|
82
|
+
if (value) {
|
|
83
|
+
process.exit(value);
|
|
84
|
+
}
|
|
85
|
+
}).catch((reason) => {
|
|
86
|
+
console.error(chalk2.red(reason));
|
|
87
|
+
process.exit(-1);
|
|
88
|
+
});
|
|
89
|
+
//# sourceMappingURL=lint-verbose.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/bin/package/lint-verbose.ts","../../../src/actions/package/lint.ts"],"sourcesContent":["#!/usr/bin/env node\n\nimport chalk from 'chalk'\n\nimport { packageLint } from '../../actions/index.ts'\n\npackageLint(false, true)\n .then((value) => {\n if (value) {\n process.exit(value)\n }\n })\n .catch((reason) => {\n console.error(chalk.red(reason))\n process.exit(-1)\n })\n","import { readdirSync } from 'node:fs'\nimport path from 'node:path'\nimport { cwd } from 'node:process'\nimport { pathToFileURL } from 'node:url'\n\nimport chalk from 'chalk'\nimport { ESLint } from 'eslint'\nimport { findUp } from 'find-up'\nimport picomatch from 'picomatch'\n\nconst dumpMessages = (lintResults: ESLint.LintResult[]) => {\n const colors: ('white' | 'red' | 'yellow')[] = ['white', 'yellow', 'red']\n const severity: string[] = ['none', 'warning', 'error']\n\n for (const lintResult of lintResults) {\n if (lintResult.messages.length > 0) {\n console.log(chalk.gray(`\\n${lintResult.filePath}`))\n for (const message of lintResult.messages) {\n console.log(\n chalk.gray(`\\t${message.line}:${message.column}`),\n chalk[colors[message.severity]](`\\t${severity[message.severity]}`),\n chalk.white(`\\t${message.message}`),\n chalk.gray(`\\t${message.ruleId}`),\n )\n }\n }\n }\n}\n\nasync function getRootESLintConfig() {\n // Locate the root eslint.config.mjs\n const configPath = await findUp('eslint.config.mjs')\n\n if (configPath === undefined) {\n throw new Error('eslint.config.mjs not found in the monorepo')\n }\n\n return pathToFileURL(configPath)\n}\n\nfunction getFiles(dir: string, ignoreFolders: string[]): string[] {\n const currentDirectory = cwd()\n const subDirectory = dir.split(currentDirectory)[1]\n if (ignoreFolders.includes(subDirectory)) return []\n return readdirSync(dir, { withFileTypes: true })\n .flatMap((dirent) => {\n const res = path.resolve(dir, dirent.name)\n const relativePath = (subDirectory === undefined) ? dirent.name : `${subDirectory}/${dirent.name}`\n\n const ignoreMatchers = ignoreFolders.map(pattern => picomatch(pattern))\n\n // Exclude ignored paths\n if (ignoreMatchers.some(isMatch => isMatch(relativePath))) return []\n\n return dirent.isDirectory()\n ? getFiles(res, ignoreFolders)\n : [res]\n })\n}\n\nexport const packageLint = async (fix = false, verbose = false, cache = true) => {\n const pkg = process.env.INIT_CWD\n const configPath = await getRootESLintConfig()\n const { default: eslintConfig } = await import(configPath.href)\n\n const start = Date.now()\n\n // List of folders to ignore\n const ignoreFolders = ['node_modules', 'dist', 'packages', '.git', 'build', '.yarn', '.vscode', '.github']\n\n const engine = new ESLint({\n baseConfig: [...eslintConfig], fix, warnIgnored: false, cache,\n })\n\n const files = getFiles(cwd(), ignoreFolders)\n if (verbose) {\n console.log(chalk.green(`Linting ${pkg} [files = ${files.length}]`))\n }\n const lintResults = await engine.lintFiles(files)\n\n dumpMessages(lintResults)\n\n if (fix) {\n await ESLint.outputFixes(lintResults)\n }\n const filesCountColor = files.length < 100 ? 'green' : files.length < 1000 ? 'yellow' : 'red'\n const lintTime = Date.now() - start\n const lintTimeColor = lintTime < 1000 ? 'green' : lintTime < 3000 ? 'yellow' : 'red'\n console.log(chalk.white(`Linted ${chalk[filesCountColor](files.length)} files in ${chalk[lintTimeColor](lintTime)}ms`))\n return lintResults.reduce((prev, lintResult) => prev + lintResult.errorCount, 0)\n}\n"],"mappings":"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","names":["chalk","chalk"]}
|
package/dist/bin/xy.mjs
CHANGED
|
@@ -472,7 +472,7 @@ var compileAll = ({
|
|
|
472
472
|
const start = Date.now();
|
|
473
473
|
const verboseOptions = verbose ? ["--verbose"] : ["--no-verbose"];
|
|
474
474
|
const targetOptions = target ? ["-t", target] : [];
|
|
475
|
-
const incrementalOptions = incremental ? ["--since", "-
|
|
475
|
+
const incrementalOptions = incremental ? ["--since", "-Ap", "--topological-dev"] : ["--parallel", "-Ap", "--topological-dev"];
|
|
476
476
|
const jobsOptions = jobs ? ["-j", `${jobs}`] : [];
|
|
477
477
|
if (jobs) {
|
|
478
478
|
console.log(chalk9.blue(`Jobs set to [${jobs}]`));
|
|
@@ -1024,7 +1024,11 @@ var dupdeps = () => {
|
|
|
1024
1024
|
|
|
1025
1025
|
// src/actions/lint.ts
|
|
1026
1026
|
import chalk17 from "chalk";
|
|
1027
|
-
var lintPackage = ({
|
|
1027
|
+
var lintPackage = ({
|
|
1028
|
+
pkg,
|
|
1029
|
+
fix: fix2,
|
|
1030
|
+
verbose
|
|
1031
|
+
}) => {
|
|
1028
1032
|
console.log(chalk17.gray(`${fix2 ? "Fix" : "Lint"} [${pkg}]`));
|
|
1029
1033
|
const start = Date.now();
|
|
1030
1034
|
const result = runSteps(`${fix2 ? "Fix" : "Lint"} [${pkg}]`, [
|
|
@@ -1032,7 +1036,7 @@ var lintPackage = ({ pkg, fix: fix2 }) => {
|
|
|
1032
1036
|
"workspace",
|
|
1033
1037
|
pkg,
|
|
1034
1038
|
"run",
|
|
1035
|
-
fix2 ? "package-fix" : "package-lint"
|
|
1039
|
+
fix2 ? "package-fix" : verbose ? "package-lint-verbose" : "package-lint"
|
|
1036
1040
|
]]
|
|
1037
1041
|
]);
|
|
1038
1042
|
console.log(chalk17.gray(`${fix2 ? "Fixed in" : "Linted in"} [${chalk17.magenta(((Date.now() - start) / 1e3).toFixed(2))}] ${chalk17.gray("seconds")}`));
|
|
@@ -1048,7 +1052,11 @@ var lint = ({
|
|
|
1048
1052
|
verbose,
|
|
1049
1053
|
incremental,
|
|
1050
1054
|
fix: fix2
|
|
1051
|
-
}) : lintPackage({
|
|
1055
|
+
}) : lintPackage({
|
|
1056
|
+
pkg,
|
|
1057
|
+
fix: fix2,
|
|
1058
|
+
verbose
|
|
1059
|
+
});
|
|
1052
1060
|
};
|
|
1053
1061
|
var lintAllPackages = ({ fix: fix2 = false } = {}) => {
|
|
1054
1062
|
console.log(chalk17.gray(`${fix2 ? "Fix" : "Lint"} [All-Packages]`));
|
|
@@ -1829,7 +1837,15 @@ var xyLintCommands = (args) => {
|
|
|
1829
1837
|
(argv) => {
|
|
1830
1838
|
if (argv.verbose) console.log("Lint");
|
|
1831
1839
|
const start = Date.now();
|
|
1832
|
-
process.exitCode = argv.fix ? fix({
|
|
1840
|
+
process.exitCode = argv.fix ? fix({
|
|
1841
|
+
pkg: argv.package,
|
|
1842
|
+
cache: argv.cache,
|
|
1843
|
+
verbose: !!argv.verbose
|
|
1844
|
+
}) : lint({
|
|
1845
|
+
pkg: argv.package,
|
|
1846
|
+
cache: argv.cache,
|
|
1847
|
+
verbose: !!argv.verbose
|
|
1848
|
+
});
|
|
1833
1849
|
console.log(chalk24.blue(`Finished in ${Date.now() - start}ms`));
|
|
1834
1850
|
}
|
|
1835
1851
|
).command(
|