1
resposta

carregar imagens para dentro do dist

Gostaria de saber como faço a configuração do webpapack.config (baseado no modelo do curso) para carregar imagens feitas no html e coloca-las dentro da pasta dist (exemplo dist/imgs/ )para um possível deploy

Meu webpack.config.js

const path = require('path');
const babiliPlugin = require('babili-webpack-plugin');
const extractTextPlugin = require('extract-text-webpack-plugin');
const optimizeCSSAssetsPlugin = require('optimize-css-assets-webpack-plugin');
const webpack = require('webpack');
const HtmlWepackPlugin = require('html-webpack-plugin');

let plugins = [];

plugins.push(new HtmlWepackPlugin({

    hash: true,
    minify: {
        html5: true, 
        collapseWhitespace: true, 
        removeComments: true
    },
    filename: 'index.html',
    template: __dirname + '/main.html'

}));
plugins.push(new extractTextPlugin('styles.css'))

plugins.push(new webpack.ProvidePlugin({
    '$': 'jquery/dist/jquery.js',
    'jQuery': 'jquery/dist/jquery.js'
}));

plugins.push(new webpack.optimize.CommonsChunkPlugin({

    name: 'vendor', 
    filename: 'vendor.bundle.js'

}));

let SERVICE_URL = JSON.stringify('http://localhost:3000');

if(process.env.NODE_ENV == 'production') {

    SERVICE_URL = JSON.stringify('http://endereco-da-sua-api');

    plugins.push(new webpack.optimize.ModuleConcatenationPlugin());

    plugins.push(new babiliPlugin());

    plugins.push(new optimizeCSSAssetsPlugin({
        cssProcessor: require('cssnano'),
        cssProcessorOptions: {
            discardComments: {
                removeAll: true
            }
        },
        canPrint: true
    }));

}

plugins.push(new webpack.DefinePlugin({ SERVICE_URL }));

module.exports = {
    entry: {
        app: './app-src/app.js',
        vendor: ['jquery', 'bootstrap','reflect-metadata']
    },
    output: {
        filename: 'bundle.js',
        path: path.resolve(__dirname, 'dist')
    },
    module: {
        rules: [
            {
                test: /\.js$/,
                exclude: /node_modules/,
                use : { 
                    loader: 'babel-loader'
                }
            },
            {
                test: /\.css$/,
                use: extractTextPlugin.extract({
                    fallback: 'style-loader', 
                    use: 'css-loader'
                })

            },
            { 
                test: /\.(woff|woff2)(\?v=\d+\.\d+\.\d+)?$/, 
                loader: 'url-loader?limit=10000&mimetype=application/font-woff' 
            },
            { 
                test: /\.ttf(\?v=\d+\.\d+\.\d+)?$/, 
                loader: 'url-loader?limit=10000&mimetype=application/octet-stream'
            },
            { 
                test: /\.eot(\?v=\d+\.\d+\.\d+)?$/, 
                loader: 'file-loader' 
            },
            { 
                test: /\.svg(\?v=\d+\.\d+\.\d+)?$/, 
                loader: 'url-loader?limit=10000&mimetype=image/svg+xml' 
            }             
        ]
    }, 
    plugins
}
1 resposta

Bom dia.

Deploy de imagem ? Não entendi. Você está querendo misturar o deploy de imagens com a da aplicação? É isso? Imagens não ficam no mesmo servidor, ficam em algum cloud como S3. Ficando junto vai matar a sua app devido aos multiplos requests. Se quiser fazer o deploy junto precisa copiar a pasta manualmente para dist (webpack joga a responsabilidade no dev).

Até o CLI do Vue JS não cópia a pasta static no build, o dev precisa copiar na mão caso queira misturar os scripts e as imagens no mesmo deploy, inclusive Angular CLI. Ambos usam webpack.

Mas se você quer muito copiar tem esse plugin

https://github.com/webpack-contrib/copy-webpack-plugin

Mas eu nunca usei, mas parece que vai atender sua necessidade.

Sucesso e bom estudo.