:D Aqui tienes los comando para que no quedes como goku o_0 NPM
npm i copy-webpack-plugin -D
YARN
yarn add copy-webpack-plugin -D

¿Cómo utilizar el plugin Copy Webpack Plugin?
Trabajar con proyectos a menudo exige mover archivos de una ubicación a otra dentro de la estructura del proyecto. Para esto, es fundamental saber utilizar herramientas que optimicen dicho proceso. El plugin Copy Webpack Plugin en Webpack resuelve esta necesidad al facilitar la copia de archivos de un directorio de origen a uno de destino automáticamente. Esta guía te ayudará a comprender cómo implementarlo en tu proyecto.
¿Cómo instalar y configurar el plugin?
Iniciar la instalación del plugin es sencillo. Necesitas seguir estos pasos para integrarlo correctamente en tu proyecto:
Instalación del plugin: Abre tu terminal y ejecuta el comando para instalarlo como una dependencia de desarrollo:
npm install copy-webpack-plugin --save-dev
Integración en Webpack: Agrega soporte para el plugin en la configuración de Webpack. Para esto, modifica el archivo webpack.config.js:
const CopyPlugin = require('copy-webpack-plugin'); module.exports = { // otras configuraciones de webpack plugins: [ new CopyPlugin({ patterns: [ { from: 'src/assets/images', to: 'dist/assets/images' }, ], }), ], };
Esta configuración permite copiar todos los archivos desde la carpeta src/assets/images a dist/assets/images. Esto es especialmente útil cuando se necesita trasladar múltiples archivos sin esfuerzo manual.
¿Cómo ajustar el template del proyecto?
Ahora, asegúrate de que tu template HTML esté correctamente configurado para acceder a estas imágenes. Cambia las rutas de las imágenes para que apunten al nuevo directorio de destino:
<img src="/assets/images/twitter.png" alt="Twitter"> <img src="/assets/images/github.png" alt="GitHub"> <img src="/assets/images/instagram.png" alt="Instagram">
Modifica cualquier instancia previa que apunte al directorio src. Con esto, tu proyecto queda estructurado de forma más adecuada, leyendo las imágenes desde su nueva ubicación.
¿Qué verificar después de la implementación?
Después de activar el comando de desarrollo para ver los cambios, es crucial verificar que los elementos se han movido correctamente:
npm run dev para construir nuevamente tu proyecto.dist para confirmar que las imágenes se hayan copiado adecuadamente.Recomendaciones y consejos adicionales
Este conocimiento y habilidad te permitirán optimizar operaciones repetitivas y organizar eficientemente los recursos de tus proyectos. ¡Continúa explorando y mejorando tus habilidades técnicas!
Trabajar con proyectos a menudo exige mover archivos de una ubicación a otra dentro de la estructura del proyecto. Para esto, es fundamental saber utilizar herramientas que optimicen dicho proceso. El plugin Copy Webpack Plugin en Webpack resuelve esta necesidad al facilitar la copia de archivos de un directorio de origen a uno de destino automáticamente. Esta guía te ayudará a comprender cómo implementarlo en tu proyecto.
Iniciar la instalación del plugin es sencillo. Necesitas seguir estos pasos para integrarlo correctamente en tu proyecto:
Instalación del plugin: Abre tu terminal y ejecuta el comando para instalarlo como una dependencia de desarrollo:
npm install copy-webpack-plugin --save-dev
Integración en Webpack: Agrega soporte para el plugin en la configuración de Webpack. Para esto, modifica el archivo webpack.config.js:
const CopyPlugin = require('copy-webpack-plugin');
module.exports = {
// otras configuraciones de webpack
plugins: [
new CopyPlugin({
patterns: [
{ from: 'src/assets/images', to: 'dist/assets/images' },
],
}),
],
};
Esta configuración permite copiar todos los archivos desde la carpeta src/assets/images a dist/assets/images. Esto es especialmente útil cuando se necesita trasladar múltiples archivos sin esfuerzo manual.
Ahora, asegúrate de que tu template HTML esté correctamente configurado para acceder a estas imágenes. Cambia las rutas de las imágenes para que apunten al nuevo directorio de destino:
<img src="/assets/images/twitter.png" alt="Twitter">
<img src="/assets/images/github.png" alt="GitHub">
<img src="/assets/images/instagram.png" alt="Instagram">
Modifica cualquier instancia previa que apunte al directorio src. Con esto, tu proyecto queda estructurado de forma más adecuada, leyendo las imágenes desde su nueva ubicación.
Después de activar el comando de desarrollo para ver los cambios, es crucial verificar que los elementos se han movido correctamente:
npm run dev para construir nuevamente tu proyecto.dist para confirmar que las imágenes se hayan copiado adecuadamente.Este conocimiento y habilidad te permitirán optimizar operaciones repetitivas y organizar eficientemente los recursos de tus proyectos. ¡Continúa explorando y mejorando tus habilidades técnicas!
:D Aqui tienes los comando para que no quedes como goku o_0 NPM
npm i copy-webpack-plugin -D
YARN
yarn add copy-webpack-plugin -D

Para npm
npm i copy-webpack-plugin -D
Para yarn
yarn add copy-webpack-plugin -D
webpack.config.js...
const CopyPlugin = require('copy-webpack-plugin');
module.exports = {
...
plugins: [
new CopyPlugin({
patterns: [
{
from: path.resolve(__dirname, "src", "assets/images"),
to: "assets/images"
}
]
}),
]
}
Resolve o Join path Cuando trabajamos en entorno de Node, habrán ocasiones que deberamos describir, mediante una dirección absoluta, el directorio de trabajo. En Node, tenemos una libreía nativa para resolver este caso.
pathAbrán veces que necesitmeos resolver o unir directorios de trabajos. Donde, con una simple declaración, podriamos caer en un sencillo copy & paste sin entender sus efectos (que pudiesen ser similares).
Cuando deseen estructurar un directorio de trabajo a partir de una dirección absoluta, sin importar el SO, se utiliza path.resolve([...paths]) por ello, si queremos utilizar nuestro directorio de trabajo como una referencia, utilizamos __dirname y de ahí, resolverá el conjunto de paths que le anexemos:
/*
En nuestro ejemplo, resolverá nuestro path en /user/path/to/workdirectory/ + src + assets/images
quedando algo similar a /users/path/to/js-portfolio/src/assets/images
*/
path.resolve(__dirname, 'src', 'assets/images')
Se tendrá que ser cuidadoso en el proceso de construcción porque cada forma de escribir el path, generará en un path diferente:
path.resolve('/foo/bar', './baz');
// Returns: '/foo/bar/baz'
path.resolve('/foo/bar', '/tmp/file/');
// Returns: '/tmp/file'
path.resolve('wwwroot', 'static_files/png/', '../gif/image.gif');
// If the current working directory is /home/myself/node,
// this returns '/home/myself/node/wwwroot/static_files/gif/image.gif'
Te dejo el config webpack para que no tengas dudas
const path = require('path')
const HtmlWebpackPlugin = require('html-webpack-plugin')
const MiniCssExtractPlugin = require('mini-css-extract-plugin')
const CopyPlugin = require('copy-webpack-plugin')
module.exports = {
// mode: 'production', // LE INDICO EL MODO EXPLICITAMENTE
entry: './src/index.js', // el punto de entrada de mi aplicación
output: { // Esta es la salida de mi bundle
path: path.resolve(__dirname, 'dist'),
// resolve lo que hace es darnos la ruta absoluta de el S.O hasta nuestro archivo
// para no tener conflictos entre Linux, Windows, etc
filename: 'main.js',
// EL NOMBRE DEL ARCHIVO FINAL,
},
resolve: {
extensions: ['.js'] // LOS ARCHIVOS QUE WEBPACK VA A LEER
},
module: {
// REGLAS PARA TRABAJAR CON WEBPACK
rules : [
{
test: /\.m?js$/, // LEE LOS ARCHIVOS CON EXTENSION .JS,
exclude: /node_modules/, // IGNORA LOS MODULOS DE LA CARPETA
use: {
loader: 'babel-loader'
}
},
{
test: /\.css|.styl$/i,
use: [ MiniCssExtractPlugin.loader, 'css-loader' , 'stylus-loader' ]
}
]
},
// SECCION DE PLUGINS
plugins: [
new HtmlWebpackPlugin({ // CONFIGURACIÓN DEL PLUGIN
inject: true, // INYECTA EL BUNDLE AL TEMPLATE HTML
template: './public/index.html', // LA RUTA AL TEMPLATE HTML
filename: './index.html' // NOMBRE FINAL DEL ARCHIVO
}),
new MiniCssExtractPlugin(), // INSTANCIAMOS EL PLUGIN
new CopyPlugin({ // CONFIGURACIÓN DEL COPY PLUGIN
patterns: [
{
from: path.resolve(__dirname , "src" , 'assets/images'), // CARPETA A MOVER AL DIST
to: "assets/images" // RUTA FINAL DEL DIST
}
]
})
]
}
Este hombre va a la velocidad de la luz explicando, y eso que lo tengo en x1 jajaja
Para los que tengan el error:
[webpack-cli] HookWebpackError: Invalid host defined options
Esto se debe a un error en la versión 10 de copy-webpack-plugin. Lo único que deben cambiar es la versión del mismo en el package.json a ^9.1.0.
"devDependencies": {
"copy-webpack-plugin": "^9.1.0",
}
^ en la versión quiere decir que la instalación se puede diferenciar máximo por una "minor update". Es lo mismo que poner 9.x o directamente 9. About semantic versioning (NPM)Me entro la curiosidad, porque instalar este plugin cuando podemos simplemente copiar y pegar los archivos en la carpeta dist? Me saldrá un bug si lo hago de la manera "manual"?. Entonces, eso fue lo que hice. En vez de hacer todo el procedimiento, solo copie y pegue la carpeta assets/images en la carpeta dist desde la terminal, además de cambiar la dirección en el template hecho con JavaScript. . Lo que paso fue exactamente lo mismo, realmente nada cambio. Todo funcionaba muy bien. Entonces no se porque tengamos que descargar este plugin 🤔
Tengo una duda, todo lo que este en la carpeta dist es lo que va luego a producción, ¿no? Otra duda que me surge es, al momento de estar realizando ya un proyecto, nosotros trabajaremos en las carpetas de public y src, ¿no?
P.D.: Me esta fascinando esta herramienta (un poco compleja al comienzo pero, super necesario creo yo)
patterns que utiliza el profesor?Es una de las opciones que tiene el plugin para configrar. El plugin tiene dos parámetros:
path.resolve en este plugin?Porque webpack necesita una ruta absoluta para saber dónde están los archivos. En este caso le estamos una ruta relativa respecto a la carpeta de nuestro proyecto, pero lo que hace pathes devolver la ruta con respecto a nuestro disco duro.
MY NOTES COPY OF ARCHIVES WITH WEBPACK :D
En esta clase veremos como mover un archivo o elemento dentro de src hacia la carpeta de distribution para eso veremos un plugin que se llama copiwebpack el cual nos va ayudar a mover estos archivos o recursos que necesitamos.
npm install copy-webpack-plugin -D
//Importamos el plugin para poder hacer uso de el
const CopyPlugin = require('copy-webpack-plugin');
plugins: [
new HtmlWebpackPlugin({
inject: true,
template: './public/index.html',
filename: './index.html'
}),
new MiniCssExtracPlugin(),
//Instanciamos el plugin
//Luego le pasamos por parametro la configuracion que va a tener
new CopyPlugin({
patterns:[
{
//De esta forma decimos que aqui es donde se encuentran los archivos
//Que vamos a mover
from: path.resolve(__dirname, 'src','assets/images'),
//hacia donde lo vamos a mover
to: "assets/images"
}
]
})
]