Skip to content

Commit 69a87e3

Browse files
committed
fix: make installNpmPackage work without package.json
1 parent f45d98c commit 69a87e3

File tree

9 files changed

+296
-219
lines changed

9 files changed

+296
-219
lines changed

README.md

+49-41
Original file line numberDiff line numberDiff line change
@@ -19,47 +19,51 @@
1919

2020
<!-- START mdmod {use: 'toc'} -->
2121

22-
- [Quick Start](#quick-start)
23-
- [1. Bootstrap your project](#1-bootstrap-your-project)
24-
- [2. Add and edit template files](#2-add-and-edit-template-files)
25-
- [3. Build the app (TypeScript only)](#3-build-the-app-typescript-only)
26-
- [4. Publish package to npm](#4-publish-package-to-npm)
27-
- [5. PROFIT](#5-profit)
28-
- [Template](#template)
29-
- [Advanced: Multiple templates](#advanced-multiple-templates)
30-
- [Helper functions](#helper-functions)
31-
- [`upper`](#upper)
32-
- [`lower`](#lower)
33-
- [`capital`](#capital)
34-
- [`camel`](#camel)
35-
- [`snake`](#snake)
36-
- [`kebab`](#kebab)
37-
- [`space`](#space)
38-
- [`uuid`](#uuid)
39-
- [Config](#config)
40-
- [templateRoot (required)](#templateroot-required)
41-
- [modifyName (default: `undefined`)](#modifyname-default-undefined)
42-
- [extra (default: `undefined`)](#extra-default-undefined)
43-
- [defaultDescription (default: `description`)](#defaultdescription-default-description)
44-
- [defaultAuthor (default: `user.name` in `~/.gitconfig` otherwise `Your name`)](#defaultauthor-default-username-in-gitconfig-otherwise-your-name)
45-
- [defaultEmail (default: `user.email` in `~/.gitconfig` otherwise `Your email`)](#defaultemail-default-useremail-in-gitconfig-otherwise-your-email)
46-
- [defaultTemplate (default: `default`)](#defaulttemplate-default-default)
47-
- [defaultLicense (default: `MIT`)](#defaultlicense-default-mit)
48-
- [defaultPackageManager (default: `undefined`)](#defaultpackagemanager-default-undefined)
49-
- [promptForDescription (default: `true`)](#promptfordescription-default-true)
50-
- [promptForAuthor (default: `true`)](#promptforauthor-default-true)
51-
- [promptForEmail (default: `true`)](#promptforemail-default-true)
52-
- [promptForTemplate (default: `false`)](#promptfortemplate-default-false)
53-
- [promptForLicense (default: `true`)](#promptforlicense-default-true)
54-
- [promptForPackageManager (default: `false`)](#promptforpackagemanager-default-false)
55-
- [skipGitInit (default: `false`)](#skipgitinit-default-false)
56-
- [skipNpmInstall (default: `false`)](#skipnpminstall-default-false)
57-
- [after (default: `undefined`)](#after-default-undefined)
58-
- [caveat (default: `undefined`)](#caveat-default-undefined)
59-
- [`AfterHookOptions`](#afterhookoptions)
60-
- [Showcase](#showcase)
61-
- [Contribution](#contribution)
62-
- [Contributors ✨](#contributors-)
22+
23+
- [✨ Create Create App](#-create-create-app)
24+
- [Why?](#why)
25+
- [Table of contents](#table-of-contents)
26+
- [Quick Start](#quick-start)
27+
- [1. Bootstrap your project](#1-bootstrap-your-project)
28+
- [2. Add and edit template files](#2-add-and-edit-template-files)
29+
- [3. Build the app (TypeScript only)](#3-build-the-app-typescript-only)
30+
- [4. Publish package to npm](#4-publish-package-to-npm)
31+
- [5. PROFIT](#5-profit)
32+
- [Template](#template)
33+
- [Advanced: Multiple templates](#advanced-multiple-templates)
34+
- [Helper functions](#helper-functions)
35+
- [`upper`](#upper)
36+
- [`lower`](#lower)
37+
- [`capital`](#capital)
38+
- [`camel`](#camel)
39+
- [`snake`](#snake)
40+
- [`kebab`](#kebab)
41+
- [`space`](#space)
42+
- [`uuid`](#uuid)
43+
- [Config](#config)
44+
- [templateRoot (required)](#templateroot-required)
45+
- [modifyName (default: `undefined`)](#modifyname-default-undefined)
46+
- [extra (default: `undefined`)](#extra-default-undefined)
47+
- [defaultDescription (default: `description`)](#defaultdescription-default-description)
48+
- [defaultAuthor (default: `user.name` in `~/.gitconfig` otherwise `Your name`)](#defaultauthor-default-username-in-gitconfig-otherwise-your-name)
49+
- [defaultEmail (default: `user.email` in `~/.gitconfig` otherwise `Your email`)](#defaultemail-default-useremail-in-gitconfig-otherwise-your-email)
50+
- [defaultTemplate (default: `default`)](#defaulttemplate-default-default)
51+
- [defaultLicense (default: `MIT`)](#defaultlicense-default-mit)
52+
- [defaultPackageManager (default: `undefined`)](#defaultpackagemanager-default-undefined)
53+
- [promptForDescription (default: `true`)](#promptfordescription-default-true)
54+
- [promptForAuthor (default: `true`)](#promptforauthor-default-true)
55+
- [promptForEmail (default: `true`)](#promptforemail-default-true)
56+
- [promptForTemplate (default: `false`)](#promptfortemplate-default-false)
57+
- [promptForLicense (default: `true`)](#promptforlicense-default-true)
58+
- [promptForPackageManager (default: `false`)](#promptforpackagemanager-default-false)
59+
- [skipGitInit (default: `false`)](#skipgitinit-default-false)
60+
- [skipNpmInstall (default: `false`)](#skipnpminstall-default-false)
61+
- [after (default: `undefined`)](#after-default-undefined)
62+
- [caveat (default: `undefined`)](#caveat-default-undefined)
63+
- [`AfterHookOptions`](#afterhookoptions)
64+
- [Showcase](#showcase)
65+
- [Contribution](#contribution)
66+
- [Contributors ✨](#contributors-)
6367

6468
<!-- END mdmod -->
6569

@@ -120,6 +124,8 @@ Built-in variables are:
120124
- `{{contact}}` author name formatted with `{{name}} <{{email}}>`. If email is missing, simply `{{name}}`
121125
- `{{license}}` package license (e.g. `MIT`)
122126
- `{{year}}` current year (e.g. `2021`)
127+
- `{{template}} selected template name (e.g. `typescript`)
128+
- `{{packageManager}} package manager (e.g. `yarn`)
123129

124130
### Advanced: Multiple templates
125131

@@ -346,6 +352,8 @@ create('create-greet', {
346352
```typescript
347353
{
348354
// variables
355+
name: string; // e.g. "create-greet"
356+
template: string; // e.g. "default"
349357
packageDir: string; // e.g. "/path/to/ohayo"
350358
templateDir: string; // e.g. "/path/to/create-greet/templates/default"
351359
year: number; // e.g. 2020

src/cli.ts

+5-4
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import { AfterHookOptions, create } from '.';
66

77
const templateRoot = resolve(__dirname, '..', 'templates');
88

9-
const caveat = ({ name, template }: AfterHookOptions) => {
9+
const caveat = ({ answers: { name, template } }: AfterHookOptions) => {
1010
let text = `
1111
cd ${chalk.bold.green(name)}
1212
`;
@@ -40,14 +40,15 @@ ${chalk.yellow(
4040

4141
create('create-create-app', {
4242
templateRoot,
43-
modifyName: (name) => (name.startsWith('create-') ? name : `create-${name}`),
44-
4543
promptForTemplate: true,
4644
skipNpmInstall: true,
4745

46+
modifyName: (name) => (name.startsWith('create-') ? name : `create-${name}`),
47+
4848
after: async ({ installNpmPackage }: AfterHookOptions) => {
49-
console.log('Installing the latest version of create-create-app');
49+
console.log('\nInstalling the latest version of create-create-app');
5050
await installNpmPackage('create-create-app');
5151
},
52+
5253
caveat,
5354
});

0 commit comments

Comments
 (0)