(options: Options)
| 303 | } |
| 304 | |
| 305 | export async function init(options: Options): Promise<boolean> { |
| 306 | let generatedPackageJson = false; |
| 307 | let packageJson; |
| 308 | try { |
| 309 | packageJson = await readJson('./package.json'); |
| 310 | } catch (e) { |
| 311 | const err = e as Error & {code?: string}; |
| 312 | if (err.code !== 'ENOENT') { |
| 313 | throw new Error(`Unable to open package.json file: ${err.message}`); |
| 314 | } |
| 315 | const generate = await query( |
| 316 | `${chalk.bold('package.json')} does not exist.`, |
| 317 | 'Generate', |
| 318 | true, |
| 319 | options, |
| 320 | ); |
| 321 | |
| 322 | if (!generate) { |
| 323 | options.logger.log('Please run from a directory with your package.json.'); |
| 324 | return false; |
| 325 | } |
| 326 | |
| 327 | packageJson = DEFAULT_PACKAGE_JSON; |
| 328 | generatedPackageJson = true; |
| 329 | } |
| 330 | |
| 331 | const [addedDeps, addedScripts] = await Promise.all([ |
| 332 | addDependencies(packageJson, options), |
| 333 | addScripts(packageJson, options), |
| 334 | ]); |
| 335 | if (generatedPackageJson || addedDeps || addedScripts) { |
| 336 | await writePackageJson(packageJson, options); |
| 337 | } else { |
| 338 | options.logger.log('No edits needed in package.json.'); |
| 339 | } |
| 340 | await Promise.all([ |
| 341 | generateTsConfig(options), |
| 342 | generateESLintConfig(options), |
| 343 | generateESLintIgnore(options), |
| 344 | generatePrettierConfig(options), |
| 345 | generateEditorConfig(options), |
| 346 | ]); |
| 347 | await installDefaultTemplate(options); |
| 348 | |
| 349 | // Run `npm install` after initial setup so `npm run lint` works right away. |
| 350 | if (!options.dryRun) { |
| 351 | // --ignore-scripts so that compilation doesn't happen because there's no |
| 352 | // source files yet. |
| 353 | |
| 354 | cp.spawnSync( |
| 355 | getPkgManagerCommand(options.yarn), |
| 356 | ['install', '--ignore-scripts'], |
| 357 | {stdio: 'inherit'}, |
| 358 | ); |
| 359 | } |
| 360 | |
| 361 | return true; |
| 362 | } |
no test coverage detected
searching dependent graphs…