Creación de una biblioteca a partir de un componente VUE y publicación en NPM

imagen



He estado desarrollando en Vue.js durante mucho tiempo, pero no tuve que empaquetar componentes para su publicación. Recientemente surgió la idea de un componente interesante y decidí compartirlo con la comunidad. Pero el hecho es que no pude encontrar una guía completa sobre este tema en la Internet rusa. Por eso, después de estudiar el tema, decidí compartir mi solución sobre este tema.

Además, decidí que sería bueno adjuntar la implementación del componente de demostración a github-pages, para la conveniencia de los desarrolladores que decidan ver cómo funciona este componente.

La documentación tiene una sección que describe el proceso de publicación cli.vuejs.org/en/guide/deployment.html , pero no es adecuada para construir una biblioteca + demo + npm


Instalación y creación de proyectos



Usaremos la CLI de Vue para crear el paquete. No describiré esto en detalle, solo agregaré enlaces a secciones de la documentación:





IMPORTANTE: A continuación, en los ejemplos de código, el nombre de mi componente es vue-input-calculator , no olvide cambiarlo.


Configuración del proyecto



package.json aquí necesitamos agregar / cambiar:



Más detalles
homepage

main

version — , ,

private — false ,

scripts: «build»: «vue-cli-service build --target lib --name vue-input-calculator src/lib.js» — , . : cli.vuejs.org/ru/guide/build-targets.html

scripts: «predeploy» / «deploy» — /



{ 
"name": "vue-input-calculator", 
"homepage": "https://lih1989.github.io/vue-input-calculator/", 
"main": "./lib/vue-input-calculator.common.js", 
"version": "0.1.0", 
"scripts": {
 "serve": "vue-cli-service serve --port 3000",
 "predeploy": "vue-cli-service build --mode demo", 
 "deploy": "gh-pages -d demo", 
 "build": "vue-cli-service build --target lib --name vue-input-calculator src/lib.js", 
 "lint": "vue-cli-service lint" 
}
}


vue.config.js se crea y se completa con los parámetros necesarios.



Más detalles
publicPath: github page

outputDir: production lib, demo

css.extract: css ,



module.exports = {
    publicPath: process.env.NODE_ENV === 'production'
        ? '/'
        : '/vue-input-calculator/',
    outputDir: process.env.NODE_ENV === 'production'
        ? __dirname+'/lib'
        : __dirname+'/demo',
    css: {
        extract: false
    }
};


src / lib.js crea un punto de compilación separado para nuestra biblioteca

import VueInputCalculator from './components/VueInputCalculator'
export default VueInputCalculator


.gitignore : elimina la carpeta de demostración del repositorio



/demo/
...


Cree una cuenta en npmjs - www.npmjs.com/signup



Desarrollo y publicación



Realizamos por orden:



0.  - npm run serve
1.    - npm run build
2.1.  - git commit - m "commit"
2.2.     - git push
3.    - npm run predeploy
4.   gh-pages - npm run deploy
5.    npmjs -  npm publish ( npm login)


Después de la primera implementación, se creará una rama de gh-pages; debe ir a la configuración del repositorio e instalar esta rama para mostrar las páginas de github:

imagen


Conclusión



Eso es todo, ahora tenemos un proyecto de código abierto que podemos desarrollar y mejorar.



Gracias por leer este material, no es ideal y no será adecuado para proyectos grandes con muchos componentes, pero dará una comprensión general de cómo funciona la publicación y la implementación.

UPD. No marqué la casilla Tutorial porque no estoy seguro de si la decisión que tomé fue correcta y si todo se hizo correctamente. Estaría muy agradecido por los comentarios de colegas más experimentados.


Si no ha "despegado", ha encontrado inconsistencias o tiene sugerencias para mejorar esta guía, escriba en los comentarios o en mensajes privados.



Código completo del proyecto de ejemplo



github.com/lih1989/vue-input-calculator



Materiales utilizados:






All Articles