commitizen / commitizen/cz-cli

commitizen init fails when commitizen is installed with -g

Abierto
#418 3 comentarios 7 reacciones 0 asignados Ver en GitHub
bug cli hacktoberfest help / pr wanted
Lenguaje dominante
JavaScript
Estrellas
17.5k
Forks
566
Merge medio
8 h 16 min
PR fusionados (30 d)
1

Descripción

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.

Guía de contribución

Abrir la guía de contribución

Línea de trabajo

Reproduce el fallo en un proyecto npm completamente nuevo usando los pasos de instalación global documentados y el comando init. Lee commitizen/init.js y commitizen/adapter.js, especialmente la búsqueda de package.json y la ruta addPathToAdapterConfig que se muestra en el stack trace. Se considera terminado cuando init se comporta correctamente para el directorio actual y gestiona la ausencia de package.json según lo especificado en el issue.

Escrito por el modelo de indexación a partir del texto del issue.

Evaluación

Stack tecnológico
javascript, nodejs
Área
cli, tooling
Tipo de issue
Error
Dificultad
3/5
Tiempo estimado
1-2 días
Estado de actividad
Estancado
Claridad
Bien especificado
Aptitud para principiantes
35/100

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.