tag - npm instala y crea un repositorio de github bifurcado
how to make a github release (4)
Actualización para aquellos que usan npm 5:
A partir de npm @ 5, los scripts de publicación previa están en desuso.
Utilice
prepare
pasos deprepare
para la compilación yprepublishOnly
para carga.
Encontré que agregar un
"prepare": "npm run build"
a los scripts solucionó todos mis problemas.
Esta no es una pregunta totalmente nueva, pero he estado buscando por un buen tiempo y tengo problemas para encontrar una solución.
Estoy usando un módulo para mi aplicación angular llamado angular-translate.
Sin embargo, he tenido que hacer algunas pequeñas modificaciones en el código fuente para que todo funcione de la manera que me gustaría, y ahora quiero persistir esos cambios en la
npm install
.
Un colega me sugirió que bifurcara el repositorio del código fuente y señalara mi repositorio bifurcado como una dependencia, que he intentado de esta manera, por ejemplo
npm install https://github.com/myRepo/angular-translate
npm install https://github.com/myRepo/angular-translate/archive/master.tar.gz
El primero me da un directorio como este sin compilación. Solo un paquete.json, .npmignore y algunos archivos de descuento
-angular-translate
.npmignore
.nvmrc
CHANGELOG.md
package.json
etc
La segunda
npm install
me da el repositorio completo, pero nuevamente no obtengo una compilación como cuando uso el comando
npm install angular-translate
.
He visto algunas dudas sobre cómo ejecutar el script de prepublicación, pero no estoy seguro de cómo hacerlo al instalar todos los módulos.
También intenté publicar la bifurcación como mi propio módulo en el registro npm, pero nuevamente no obtengo compilación, y no estoy seguro de que sea lo correcto ...
Pido disculpas por mi ignorancia sobre el tema. No tengo mucha experiencia con npm. Me encantaría recibir algunos comentarios sobre este tema. Parece que podría ser un problema bastante común cuando se necesitan hacer modificaciones al código fuente de un paquete. Tal vez hay una mejor solución? Gracias de antemano por tu ayuda.
Para aprovechar la excelente respuesta de @ RyanZim, el
postinstall
es definitivamente una opción válida para esto.
Realice uno de los siguientes:
- Actualice package.json en su repositorio bifurcado para agregar un elemento postinstall a los scripts. Aquí, ejecute lo que necesite para obtener el resultado compilado (Preferido).
- Actualice su package.json y agregue un postinstall que actualice el directorio necesario en node_modules.
Si ha bifurcado el repositorio de otra persona, puede valer la pena plantear un problema para ilustrar el problema de que instalar su paquete a través de GitHub no funciona, ya que no proporciona los medios necesarios para construir el script. A partir de ahí, pueden aceptar un RP para resolver esto con una postinstall, o pueden rechazarlo y usted puede hacer el # 2.
Pruebe
npm install <ghusername>/<repoName>
, donde
<ghUsername>
es su nombre de usuario de GitHub (sin la
@
) y
<repoName>
es el nombre del repositorio.
Eso debería instalarlo correctamente.
Lo más probable es que desee utilizar el
--save
o
--save-dev
con el comando de instalación para guardar la dependencia en su
package.json
.
Si eso no funciona correctamente, verifique el contenido de su archivo
.npmignore
.
No entre en pánico si el comando de instalación lleva mucho tiempo; la instalación desde un repositorio git es más lenta que la instalación desde el registro npm.
Editar:
Su problema es que, en su caso,
dist/
no está comprometido con el repositorio (ya que está en
.gitignore
).
Ahí es donde vive el código real.
dist/
se crea a partir de los archivos en
src/
antes de que el paquete se publique en el registro npm, pero
dist/
nunca se compromete con el repositorio.
Es feo, pero en este caso tendrá que eliminar
dist/
del
.gitignore
y luego ejecutar:
npm run build
git add .
git commit
git push
(Asegúrese de haber ejecutado
npm install
primero)
Entonces debería poder instalar desde github.
Puede haber otra forma de hacerlo utilizando un script
postinstall
a la
postinstall
, pero no estoy seguro de si eso es posible;
Nunca lo he intentado.
Simplemente use el comando
npm install git+https://[email protected]/myRepo/angular-translate.git
.
Gracias.