Estoy usando NodeJs, webpack y ES2015 para mi aplicación.

Parece que no puedo entender cómo importar una imagen / s en mis módulos. Lo siguiente no funciona.

import "../../css/image/t1.png";

EDITAR: Según la solicitud de Sitian, aquí está mi configuración de paquete web:

const webpack = require( "webpack" );
const path = require( "path" );
const merge = require( "webpack-merge" );
const TARGET = process.env.npm_lifecycle_event;
process.env.BABEL_ENV = TARGET;

const PATHS = {
    app : path.join( __dirname, "app" ),
    build : path.join( __dirname, "build" )
};

const common = {
    entry : {
        app : PATHS.app
    },
    resolve : { // helps us refer to .js? without ext.
        extensions : [ "", ".js", ".jsx" ]
    },
    output : {
        path : PATHS.build,
        filename : "bundle.js"
    },
    module : {
        preLoaders : [
            {
                test : /\.css$/,
                loaders : [ "postcss" ],
                include : PATHS.app
            },
            {
                test : /\.jsx?$/,
                loaders : [ "eslint" ],
                include : PATHS.app
            }
        ],
        loaders : [
            {
                test : /\.css$/,
                loaders : [ "style", "css" ],
                include : PATHS.app
            },
            {
                test : /\.jsx?$/,
                loader : 'babel',
                query : {
                    cacheDirectory : true,
                    presets : [ 'react', 'es2015' ]
                },
                include : PATHS.app
            }
        ]
    }
};

if( TARGET === "start" || !TARGET ) {
    module.exports = merge( common, {
        devtool : 'inline-source-map',
        devServer : {
            contentBase : PATHS.build,
            hot : true,
            progress : true,
            stats : 'errors-only'
        },
        plugins : [
            new webpack.HotModuleReplacementPlugin()
        ]
    } );
}
if( TARGET === "build" ) {
  module.exports = merge( common, {} );
}
6
Kayote 12 may. 2016 a las 22:11

3 respuestas

La mejor respuesta

El cargador de archivos (o url-loader, que" puede devolver una URL de datos si el archivo es más pequeño que un límite ") se puede usar para importar imágenes en módulos .

Consulte la documentación de los cargadores de paquetes web para obtener más información sobre cómo utilizar dichos cargadores:

Configuración

{ test: /\.png$/, loader: "url-loader?mimetype=image/png" }
14
klaasman 30 ago. 2017 a las 08:15

Con las versiones actuales de webpack debería funcionar:

import t1 from "../../css/image/t1.png";

Y su webpack.config (webpack 2.0):

module: {
  rules: [
    {test: /\.png$/, use: 'url-loader?mimetype=image/png'},
  ]
}
2
Nissa 10 feb. 2017 a las 17:55

Puede hacerlo agregando un cargador a la configuración de su paquete web (v1):

 {
    test: /\.png$/,
    loader: "url-loader?mimetype=image/png" 
 }

Luego instálalo:

npm install url-loader

Y finalmente podrá importar la imagen usando:

import image from 'images/name.png'
1
jack.the.ripper 15 feb. 2017 a las 17:28