commitizen / commitizen/cz-cli

commitizen init fails when commitizen is installed with -g

Aperta
#418 3 commenti 7 reazioni 0 assegnatari Vedi su GitHub
bug cli hacktoberfest help / pr wanted
Lingua principale
JavaScript
Stelle
17.5k
Fork
566
Merge medio
8h 16m
PR unite (30g)
1

Descrizione

Installing commitizen globally using the steps in the documentation as shown here

```
npm install -g commitizen
npm install -g cz-conventional-changelog
echo '{ "path": "cz-conventional-changelog" }' > ~/.czrc
```

Prevents you from being able to run `commitizen init --save-dev cz-conventional-changelog` in a brand new npm project.

```
Attempting to initialize using the npm package cz-conventional-changelog
Error: A previous adapter is already configured. Use --force to override
```

Actually running `commitizen init --save-exact --save-dev cz-conventional-changelog --force` results in:

```
Attempting to initialize using the npm package cz-conventional-changelog
npm WARN using --force I sure hope you know what you are doing.
npm WARN saveError ENOENT: no such file or directory, open '/Users/jim.cummins/package.json'
/Users/jim.cummins
└─┬ cz-conventional-changelog@1.2.0
├── conventional-commit-types@2.1.0
├── lodash.map@4.6.0
├── longest@1.0.1
├─┬ pad-right@0.2.2
│ └── repeat-string@1.6.1
├── right-pad@1.0.1
└── word-wrap@1.2.0

npm WARN enoent ENOENT: no such file or directory, open '/Users/jim.cummins/package.json'
npm WARN jim.cummins No description
npm WARN jim.cummins No repository field.
npm WARN jim.cummins No README data
npm WARN jim.cummins No license field.
{ Error: ENOENT: no such file or directory, open '/Users/jim.cummins/package.json'
at Error (native)
at Object.fs.openSync (fs.js:640:18)
at Object.fs.readFileSync (fs.js:508:33)
at addPathToAdapterConfig (/Users/jim.cummins/.nvm/versions/node/v6.9.1/lib/node_modules/commitizen/dist/commitizen/adapter.js:71:40)
at init (/Users/jim.cummins/.nvm/versions/node/v6.9.1/lib/node_modules/commitizen/dist/commitizen/init.js:104:9)
at Object.bootstrap (/Users/jim.cummins/.nvm/versions/node/v6.9.1/lib/node_modules/commitizen/dist/cli/commitizen.js:43:30)
at Object. (/Users/jim.cummins/.nvm/versions/node/v6.9.1/lib/node_modules/commitizen/bin/commitizen.js:2:38)
at Module._compile (module.js:570:32)
at Object.Module._extensions..js (module.js:579:10)
at Module.load (module.js:487:32)
errno: -2,
code: 'ENOENT',
syscall: 'open',
path: '/Users/jim.cummins/package.json' }
```

I think this is because when running init we need to assume that the user wants to only init in the current directory, as such we should not be using findup to get the highest npm path like we do when looking for an adapter. Instead we need to be stricter in the case of init. We should explicitly be looking in the current directory for a package.json or we should fail.

Guida per i contributori

Apri la guida per i contributori

Direzione di ricerca

Riproduci il malfunzionamento in un progetto npm completamente nuovo utilizzando i passaggi documentati per l'installazione globale e il comando init. Leggi commitizen/init.js e commitizen/adapter.js, in particolare la ricerca di package.json e il percorso addPathToAdapterConfig mostrato nello stack trace. Il lavoro è completato quando init si comporta correttamente per la directory corrente e gestisce l'assenza di package.json come specificato nell'issue.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Valutazione

Stack tecnologico
javascript, nodejs
Ambito
cli, tooling
Tipo di issue
Bug
Difficoltà
3/5
Tempo stimato
1-2 giorni
Stato di attività
Ferma
Chiarezza
Specificata chiaramente
Idoneità per principianti
35/100

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.