Una biblioteca de animación simple y fácil de usar para desarrolladores web
Páginas Git · Demo de juegos · Informe de error · Función de solicitud
Jos-Animation, JavaScript On Scroll Animation Library es un paquete de biblioteca de animación simple y fácil de usar para agregar instantáneamente una animación profesional a su sitio web. Fue construido para facilitar mi vida mientras desarrollaba sitios web y viene con toneladas de características y es totalmente personalizable. Es liviano y tiene una huella muy pequeña. La mejor parte de todas es que no tiene un número (*mínimo) en el rendimiento.
Este proyecto está siendo desarrollado actualmente por yo y la comunidad de desarrollo, por lo que puede esperar más funciones y actualizaciones con bastante frecuencia.
Fue inspirado en las bibliotecas GSAP, AOS. Quería algo más fácil de usar, con un gran rendimiento y quería mejorar la implementación. Así que trabajé en este proyecto desde cero.
No dude en informar un problema o solicitar una función en este repositorio :) y para obtener más información, consulte la página web de JOS.
< a
target =" _blank "
rel =" noopener noreferrer nofollow "
href =" https://github.com/jesvijonathan/JOS-Animation-Library "
>
< img
src =" https://cdn.jsdelivr.net/gh/jesvijonathan/JOS-Animation-Library@master/res/badge/jos_github%20default.svg "
alt =" JOS-Animation "
style =" max-width: 100%; "
/> </ a > JOS v0.9.2 11 Nov 2023 Jesvi Jonathan
Tiene la opción de usar la última versión de Jos de una variedad de fuentes:
< script
src =" https://cdnjs.cloudflare.com/ajax/libs/jos-animation/0.9.2/jos.js "
integrity =" sha512-ZbNmgrMmWwQspNz6WQ1HnqLEPMXE4PyJBVnuc10e4gwJhrycze2IzjDQPx4CxkOBnUyt5wNCekdeTRJOe8J4WA== "
crossorigin =" anonymous "
referrerpolicy =" no-referrer "
> </ script > < script src =" https://cdn.jsdelivr.net/npm/[email protected]/dist/jos.js " > </ script > < script src =" https://cdn.jsdelivr.net/gh/jesvijonathan/JOS-Animation-Library/dist/jos.js " > </ script >(o)
< script src =" https://cdn.jsdelivr.net/npm/jos-animation/dist/jos.js " > </ script >(o)
< script src =" https://cdn.jsdelivr.net/gh/jesvijonathan/JOS-Animation-Library/dist/v0.9.2/jos.js " > </ script > < script src =" https://unpkg.com/jos-animation " > </ script >(o)
< script src =" https://unpkg.com/[email protected]/dist/jos.js " > </ script > < script src =" https://raw.githubusercontent.com/jesvijonathan/JOS-Animation-Library/master/dist/jos.js " > </ script > Puede agregar la versión minificada del script reemplazando jos.js con jos.min.js en la etiqueta de script anterior.
jos.js para BASIC. - jos.min.js para uso de producción. - jos.debug.js para depurar junto con alguna otra función desde v0.9 en adelante, por defecto, jos.js no requiere que agregue la hoja de estilo jos.css , se exportará junto con el script. Pero aún puede agregar la hoja de estilo si lo desea por alguna razón. ### Importar Jos 1. Instale Jos usando NPM (hilo o PNPM): `` `Bash NPM Instalar Jos-Animation jos-animation@latest[email protected][email protected] Entonces sería https://unpkg.com/jos-animation/@latest/dist/jos.js (incrustado) para la última versión. o jos-animation/@0.8.8/dist/jos.js (instalación de NPM) para una versión específica.
npm install jos-animation // import "jos-animation/dist/jos.css";
// Above is required only for v0.8.8 & below (or) if you want to overide jos by using style from the stylesheet
import JOS from "jos-animation" ;
// Other ways to import JOS
// import JOS from "jos-animation/dist/jos.js";
// import JOS from "jos-animation/dist/jos.min.js";
// import JOS from "jos-animation/dist/jos.debug.js"; // main.js
import { createApp } from "vue" ;
import { watch , nextTick } from "vue" ;
import JOS from "jos-animation" ; // jos-animation/dist/jos.debug.js
import App from "./App.vue" ;
const app = createApp ( App ) ;
app . mount ( "#app" ) ;
JOS . init ( ) ;
//JOS.version();
watch (
( ) => router . currentRoute . value ,
( ) => {
nextTick ( ( ) => {
JOS . refresh ( ) ;
} ) ;
}
) ;
// To observe elements after a route changeUsado en: https://jos-animation.vercel.app/
Este ejemplo anterior para vue.js también es aplicable para nuxt.js
// index.js
import JOS from "jos-animation/dist/jos.js" ;
onload = ( ) => {
const options = {
debugMode : true ,
animation : "flip" ,
duration : 0.7 ,
rootMargin : "0% 0% 0% 0%" ,
} ;
JOS . init ( options ) ;
//JOS.version();
} ;
function Main ( ) {
useEffect ( ( ) => {
JOS . refresh ( ) ;
} , [ ] ) ;
// To observe elements after a route change
return (
< React . StrictMode >
< App />
</ React . StrictMode >
) ;
}
ReactDOM . createRoot ( document . getElementById ( "root" ) ) . render ( < Main /> ) ;Usado en: https://azzle.netlify.app
Este ejemplo anterior es para react.js también es aplicable para next.js & preact.js
// app/layout.tsx
import jos from "jos-animation/dist/jos.js" ;
export default function RootLayout ( {
children ,
} : {
children : React . ReactNode ;
} ) {
const jos_options = {
debugMode : false ,
passive : true ,
animation : "fade" ,
duration : 0.4 ,
rootMargin : "20% 0% 30% 0%" ,
} ;
useEffect ( ( ) => {
jos . init ( jos_options ) ;
} , [ ] ) ; // Once
useEffect ( ( ) => {
jos . refresh ( ) ;
} ) ; // For every update
return ( ) ;
}
// To observe elements after a route changeUsado en: https://bitspace-nextjs-jos.vercel.app
import { Component , OnInit , AfterViewChecked } from '@angular/core' ;
import JOS from 'jos-animation' ;
@ Component ( {
selector : 'app-root' ,
templateUrl : './app.component.html' ,
styleUrls : [ './app.component.css' ]
} )
export class AppComponent implements OnInit , AfterViewChecked {
ngOnInit ( ) : void {
JOS . init ( ) ; // Once
}
ngAfterViewChecked ( ) : void {
JOS . refresh ( ) ; // For every update
}
// ... rest of your code
}Puede consultar este hilo de discusión para obtener más información: Jos para Angular
JOS.init(); Para inicializar la biblioteca con la configuración predeterminada. <!-- Initialize JOS with default settings -->
< script >
JOS . init ( ) ;
</ script >JOS.init(options); Para superar la configuración predeterminada con su configuración personalizada. <!-- Global Parameters -->
< script >
JOS . init ( {
// disable: false, // Disable JOS globally | Values : 'true', 'false'
debugMode : true , // Enable JOS debug mode | Values : 'true', 'false'
passive : false , // Set the passive option for the scroll event listener | Values : 'true', 'false'
once : false , // Disable JOS after first animation | Values : 'true', 'false' || Int : 0-1000
animation : "fade" , // JOS global animation type | Values : 'fade', 'slide', 'zoom', 'flip', 'fade-right', 'fade-left', 'fade-up', 'fade-down', 'zoom-in-right', 'zoom-in-left', 'zoom-in-up', 'zoom-in-down', 'zoom-out-right', 'zoom-out-left', 'zoom-out-up', 'zoom-out-down', 'flip-right', 'flip-left', 'flip-up', 'flip-down, spin, revolve, stretch, "my-custom-animation"
// animationInverse: "static", // Set the animation type for the element when it is scrolled out of view | Values : 'fade', 'slide', 'zoom', 'flip', 'fade-right', 'fade-left', 'fade-up', 'fade-down', 'zoom-in-right', 'zoom-in-left', 'zoom-in-up', 'zoom-in-down', 'zoom-out-right', 'zoom-out-left', 'zoom-out-up', 'zoom-out-down', 'flip-right', 'flip-left', 'flip-up', 'flip-down, spin, revolve, stretch, "my-custom-animation"
timingFunction : "ease-in-out" , // JOS global timing function | Values : 'ease', 'ease-in', 'ease-out', 'ease-in-out', 'linear', 'step-start', 'step-end', 'steps()', 'cubic-bezier()', 'my-custom-timing-function'
//mirror : false, // Set whether the element should animate back when scrolled out of view | Values : 'true', 'false'
threshold : 0 , // Set global the threshold for the element to be visible | Values : 0-1
delay : 0 , // Set global the delay for the animation to start | Values : 0,1,2,3,4,5
duration : 0.7 , // Set global the duration for the animation playback | Values : flota : 0-1 & int : 0,1,2,3,4,5
// startVisible: "true", // Set whether the element should animate when the page is loaded | Values : 'true', 'false' || MS : 0-10000
// scrollDirection: "down", // Set the scroll direction for the element to be visible | Values : 'up', 'down', 'none'
//scrollProgressDisable: true // disable or enable scroll callback function | Values : 'true', 'false'
// intersectionRatio: 0.4, // Set the intersection ratio between which the element should be visible | Values : 0-1 (automatically set)
// rootMargin_top: "0%", // Set by which percent the element should animate out (Recommended value between 10% to -30%)
// rootMargin_bottom: "-50%", // Set by which percent the element should animate out (Recommended value between -10% to -60%)
// rootMargin: "0% 0% -50% 0%", // Set the root margin for the element to be visible | Values : _% _% _% _% (automatically set)
} ) ;
</ script >class="jos" al elemento que desea animar: <!-- JOS class is required to animate the element -->
< div class =" jos " > </ div >data-jos *para personalizar el elemento que desea animar, <!-- JOS attributes are optional and will work without them (class="jos" is mandatory). these attributes can be used to customize the animation of the element -->
< div
class =" jos "
data-jos_animation =" zoom "
data-jos_once =" false "
data-jos_duration =" 0.4 "
data-jos_delay =" 0.1 "
data-jos_timing-function =" ease-in-out "
data-jos_mirror =" true "
data-jos_rootMargin =" 0% 0% -50% 0% "
data-jos_rootMargin_top =" -10% "
data-jos_rootMargin_bottom =" -50% "
data-jos_scrollDirection =" down "
data-jos_startVisible =" false "
data-jos_threshold =" 0.4 "
data-jos_passive =" false "
data-jos_invoke =" myCustomFunction "
data-jos_invoke_out =" myCustomFunction_onExit "
data-jos_scroll =" your_callbackFunction "
data-jos_anchor =" #elementID "
> </ div >Consulte los accesorios de Jos para obtener información completa sobre la animación, los atributos y las opciones.
/* Custom animation class name starts with 'jos-' keyword followed by the animation name*/
. jos-my-custom-animation {
/* Set the initial state of the element */
}data-jos_animation a my-custom-animation : < div class =" jos " data-jos_animation =" my-custom-animation " > </ div >Ejemplo: animación personalizada
/* Custom inverse animation class name starts with 'jos-' keyword followed by the animation name*/
. jos-my-custom-animation-inverse {
/* Set the initial state of the element */
}data-jos_animationInverse a my-custom-animation-inverse : < div class =" jos " data-jos_animationInverse =" my-custom-animation-inverse " > </ div >Esto es especialmente útil cuando desea animar un elemento cuando se desplaza de su raíz , esto brinda más personalización para animaciones hermosas.
También puede usar una combinación de data-jos_animation ("Ninguno", "estático", sin transición, etc.) y atributos data-jos_animationInverse para crear una animación personalizada.
Ejemplo: animación inversa personalizada
/* Custom playable animation class name starts with 'jos-' keyword followed by the animation name*/
/* My Custom Playable Animation */
. jos-my-custom-animation {
transition : 1 s ;
animation : jos-my-custom-animation 1 s ease-in-out infinite;
transform : translateX ( 100 px );
}
/* Add Keyframes */
@keyframes jos-my-custom-animation {
0 % {
opacity : 1 ;
}
50 % {
transform : translateX ( -100 px );
}
}data-jos_animation a my-custom-animation y data-jos_animationInverse a my-custom-animation-play : < div
class =" jos "
data-jos_animation =" my-custom-animation "
data-jos_animationinverse =" static "
> </ div > Aquí el atributo data-jos_animationinverse está establecido en static para evitar que el elemento anime fuera de la vista y para mantenerlo en el estado final. La animación jugable se activa y comienza a reproducirse cuando el elemento se desplaza a la vista.
Ejemplo: animación jugable
/* Custom timing function attribute name starts with 'data-jos_timing_function' keyword & a custom name of your choice */
[ data-jos_timing_function = "myCustom-timingFunc" ] {
/* Set the timing of the element */
transition-timing-function : cubic-bezier ( 0.2 , 0.5 , 0.2 , 0.5 ) !important ;
}data-jos_timing-function en my-custom-timing-function : < div class =" jos " data-jos_timing-function =" myCustom-timingFunc " > </ div >Ejemplo: función de tiempo personalizado
id : <!-- My reference anchor element -->
< div id =" myElement " > </ div >data-jos_anchor a él, con la ID comenzando con sufijo # : <!-- My animated element -->
< div class =" jos " data-jos_anchor =" #myElement " > </ div > Esto desencadena la animación cuando el elemento myElement se desplaza a la vista.
Esta característica es útil, especialmente cuando desea animar un elemento que está en una posición fija .
Ejemplo: Anchor
data-jos_scrollDirection : <!-- My animated element -->
< div class =" jos " data-jos_scrollDirection =" down " > </ div > Esto desencadena la animación cuando el elemento se desplaza a la vista desde la dirección hacia down .
y puedes hacer lo mismo para la dirección hacia up .
Esto es particularmente útil cuando desea animar un elemento cuando se desplaza a la vista desde una dirección particular.
Ejemplo: animación basada en la dirección
data-jos_startVisible : <!-- My animated element -->
< div class =" jos " data-jos_startVisible =" true " > </ div > Esto establece que el elemento sea visible cuando se cargue la página. Puede agregarle un retraso estableciendo el valor en ms :
<!-- My animated element that is visible with a given timer/delay in ms-->
< div class =" jos " data-jos_startVisible =" 3000 " > </ div > Esto establece que el elemento sea visible cuando la página se carga después de 3000 ms o instantáneamente si el valor es 0 (o) true .
Esta característica es útil, especialmente cuando desea un elemento que esté en una posición fija, o que esté presente en la página de destino para estar inicialmente en un estado visible sin animación.
Ejemplo: Comience visible
// Create a custom function
function myCustomFunction ( ) {
// Do something
}data-jos_invoke a myCustomFunction : < div class =" jos " data-jos_invoke =" myCustomFunction " > </ div >Esto desencadena la función mycustomfunction () cuando el elemento se desplaza a la vista.
Puede usar el atributo data-jos_invoke_out para activar la función cuando el elemento se desplaza fuera de vista.
Ejemplo: función personalizada
data-jos_scroll a él: < div id =" elem1 " class =" jos " data-jos_scroll =" your_callbackFunction " >
Scroll Trigger Element
</ div > your_callbackFunction = ( element ) => {
// windowScrollProgress : element scroll pixel
console . log ( element . id , element . jos . windowScrollProgress ) ;
// scrollProgress : 0-1
element . style . opacity = element . jos . scrollProgress ;
// rootScrollProgress : +-0 to +-1
element . style . innerHTML = element . jos . rootScrollProgress ;
} ;Esto desencadena la función Your_CallbackFunction () cuando el elemento se desplaza. De esta manera, puede manejar el progreso de desplazamiento del elemento.
Ejemplo: función personalizada
data-jos_stagger junto con la clase jos : < div
class =" jos parent_elem "
id =" stagger "
data-jos_stagger =" spin "
data-jos_staggerinverse =" none "
data-jos_stagger_anchor =" #elementID "
data-jos_stagger_sequence =" 0.1 "
data-jos_stagger_delay =" 0 "
data-jos_stagger_duration =" 0.4 "
data-jos_stagger_timing-function =" ease-in-out "
data-jos_stagger_mirror =" true "
data-jos_stagger_rootMargin =" 0% 0% -50% 0% "
data-jos_stagger_invoke =" myCustomFunction "
data-jos_stagger_invoke_out =" myCustomFunction_onExit "
data-jos_stagger_scroll =" your_callbackFunction "
data-jos_stagger_startVisible =" false "
data-jos_stagger_scrollDirection =" down "
data-jos_stagger_once =" false "
>
<!-- data-jos_stagger="true" # this attribute along with 'jos' class in parent element is Required/Must to enable staggering -->
<!-- data-jos_stagger_anchor="true" # auto sets parent element's id & uses it as a anchor's -->
<!-- Element 1 -->
< div class =" child_elem " > </ div >
<!-- Element 2 -->
< div class =" child_elem " > </ div >
<!-- Element 3 -->
< div class =" child_elem " > </ div >
<!-- Element n -->
</ div > Se requiere/debe habilitar el atributo data-jos_stagger junto con la clase jos en el elemento matriz/para habilitar la asombro incluso si está utilizando otros atributos.
data-jos_stagger = true Asign ID Auto para el elemento principal y lo usaría como ancla para elementos infantiles.data-jos_stagger = #id usaría la identificación dada como ancla para elementos infantiles.data-jos_stagger_anchor Haga que el elemento sea independiente del elemento principal. data-jos_stagger_seq se usa para establecer el retraso entre cada elemento en la secuencia (para activar uno tras otro), mientras que data-jos_stagger_delay Total Retraso para cada elemento en su conjunto.
Ejemplo: animación asombrosa
| Atributo | Tipo | Por defecto | Descripción | Valores |
|---|---|---|---|---|
| data-jos_animation | cadena | desteñir | Establezca el tipo de animación para el elemento. | fade , slide , zoom , flip , fade-right , fade-left , fade-up , fade-down , zoom-in-right , zoom-in-left , zoom-in-up , zoom-in-down , zoom-out-right , zoom-out-left , zoom-out-up , zoom-out-down , flip-right , flip-left , flip-up , flip-down , rotate , rotate-right , spin , spin-right , revolve , revolve-right , stretch , stretch-vertical , my-custom-animation |
| data-jos_animationinverse | cadena | estático | Establezca el tipo de animación inversa para el elemento. | fade , slide , zoom , flip , fade-right , fade-left , fade-up , fade-down , zoom-in-right , zoom-in-left , zoom-in-up , zoom-in-down , zoom-out-right , zoom-out-left , zoom-out-up , zoom-out-down , flip-right , flip-left , flip-up , flip-down , rotate , rotate-right , spin , spin-right , revolve , revolve-right , stretch , stretch-vertical , my-custom-animation |
| data-jos_once | booleano | FALSO | Establezca si el elemento debería animar solo una vez. | true , false |
| data-jos_delay | intencionalmente | 0 | Establezca el retraso de la animación para comenzar. | (float: 0-1) e (int: 0, 1, 2, 3, 4, 5) |
| data-jos_duration | flotar | 0.4 | Establezca la duración de la reproducción de animación. | (float: 0-1) e (int: 0, 1, 2, 3, 4, 5) |
| Data-jos_timing-function | cadena | facilidad | Establezca la función de tiempo para la reproducción de animación. | ease , ease-in , ease-out , ease-in-out , linear , step-start , step-end , steps(1, start) , steps(1, end) , cubic-bezier(0.1, 0.7, 1.0, 0.1) , my-custom-timingFunc |
| data-jos_invoke | cadena | nulo | Establezca la función para invocarse cuando el elemento se despliegue a la vista. | function , myCustomFunction |
| data-jos_invoke_out | cadena | nulo | Establezca la función para invocarse cuando el elemento se desplace fuera de la vista. | function , myCustomFunction |
| de datos de datos | booleano e int | FALSO | Establezca si el elemento debe animar solo | (boolean: true, false) e (int: 0-infinity) |
| data-jos_rootmargin | cadena | 0% -10% 0% -50% | Establece el margen para que un elemento se anime en una ventana gráfica cuando se desplaza. | (string: "right% top% left% bottom%") |
| data-jos_rootmargin_top | cadena | 0% | Establece el margen para que un elemento anime en la parte superior de una ventana gráfica cuando se desplaza. | (string: "top%") |
| data-jos_rootmargin_bottom | cadena | 0% | Establece el margen para que un elemento se anime en la parte inferior de una ventana gráfica cuando se desplaza. | (string: "bottom%") |
| data-jos_scrolldirection | cadena | abajo | Establece la dirección para que un elemento anime en la ventana de la ventana gráfica de INA cuando se desplaza. | (string: "up", "down", "none") |
| data-jos_startvisible | booleano e int | FALSO | Establezca si el elemento debe comenzar en el estado final cuando la página está cargada (también funciona con demora). | (boolean: true, false) e (int: 0-10000 ms) |
| data-jos_anchor | cadena | nulo | Establece el elemento de anclaje para que un elemento se anime en una ventana gráfica cuando se desplaza. | (string: "#elementID") |
| data-jos_scroll | cadena | nulo | Establece la función de devolución de llamada para que un elemento se anime en una ventana gráfica cuando se desplaza. | function , your_callbackFunction |
| data-jos_stagger | cadena | desteñir | Establece la animación de Stagger para que un elemento infantil se anime en una ventana gráfica cuando se desplaza. | string , fade |
| data-jos_staggerinverse | cadena | estático | Establece la animación inversa de Stagger para que un elemento infantil se anime en una ventana gráfica cuando se desplaza (reproducir animación). | string , fade-play |
| data-jos_stagger_anchor | cadena | nulo | Establece el elemento de anclaje para que un elemento infantil se anime en una ventana gráfica cuando se desplaza. | string , #elementID |
| data-jos_stagger_seq | flotar | nulo | Establece el retraso de la secuencia para un elemento infantil para animar en una ventana gráfica cuando se desplaza. | float , 0-1 |
| data-jos_stagger_delay | flotar | nulo | Establece el retraso para un elemento de hendidura infantil para animar en una ventana gráfica cuando se desplaza. | float , 0-1 |
| data-jos_stagger_duration | flotar | nulo | Establece la duración de un elemento para niños que se anime en una ventana gráfica cuando se desplaza. | float , 0-1 |
| data-jos_stagger_timing-function | cadena | nulo | Establece la función de sincronización para un elemento Stagger infantil para animar en una ventana gráfica cuando se desplaza. | string , ease |
| data-jos_stagger_mirror | booleano | nulo | Establece la animación del espejo para que un elemento de escalón para niños se anime en una ventana gráfica cuando se desplaza. | boolean , true , false |
| data-jos_stagger_rootmargin | cadena | nulo | Establece el margen para que un elemento infantil se anime en una ventana gráfica cuando se desplaza. | (string: "right% top% left% bottom%") |
| data-jos_stagger_scrolldirection | cadena | nulo | Establece la dirección de un elemento de huelga infantil para animar en la ventana gráfica de INA cuando se desplaza. | (string: "up", "down", "none") |
| data-jos_stagger_startvisible | booleano e int | nulo | Establezca si el elemento de software infantil debe comenzar en el estado final cuando la página esté cargada (también funciona con retraso). | (boolean: true, false) e (int: 0-10000 ms) |
| data-jos_stagger_once | booleano | nulo | Establezca si el elemento debe animar solo una o n. | true , false , int |
| data-jos_stagger_scroll | cadena | nulo | Establece la función de devolución de llamada para un niño que se anime en una ventana gráfica cuando se desplaza. | function , your_callbackFunction |
| data-jos_stagger_invoke | cadena | nulo | Establezca la función que se invocará cuando el elemento de escalón para niños se desplaza a la vista. | function , myCustomFunction |
| data-jos_stagger_invoke_out | cadena | nulo | Establezca la función que se invocará cuando el elemento de holgura infantil se desplace fuera de la vista. | function , myCustomFunction |
| Método | Descripción | Parámetros |
|---|---|---|
| init () | Inicializar/restablecer JOS | opciones = {} (referir jos.init (opciones)) |
| refrescar() | Actualizar Jos | ninguno |
| detener() | Parar/pausa jos | estado = ( 0 - parar en el estado final, 1 - parar en el estado inicial, -1 - pausa en el estado actual) |
| comenzar() | Iniciar/reanudar el servicio JOS | Estado = ( 0 - Normal/Comienzo completo, -1 - Reanudar del estado actual) |
| destruir() | Destruir la instancia de Jos | Estado = ( 0 - Destruye la instancia de Jos excluyendo la hoja de estilo, 1 - Destreno completo junto con Jos -Stylesheet) |
Una vez que haya terminado y haya terminado de desarrollar una versión de JOS, puede agruparlo utilizando el siguiente comando de Project Root:
# JOS-Animation-Library
# |-dev
# |-dist
# |-bundler
# |-config
# |-export <-- Check this folder for the output files
# |-jos.css
# |-jos.js
# |...
# |-original
# |-bundle.sh <-- Run this file to bundle JOS
# ... # Change/Move to bundler directory
cd ./bundler
# Bundle the project
sh bundle.sh
# View the output files
ls ./exportMovido a problemas
Tal vez incluso agruparlo y probarlo antes de compartirlo con el mundo;
( Ping Me si tienes una demostración;) )