Объединение изображений зависимостей в основной модуль - PullRequest
0 голосов
/ 22 ноября 2018

Я столкнулся с этой проблемой, на которую потратил добрых два дня.Пожалуйста помоги.Я был бы очень признателен за любые предложения, решения или разъяснения, если это не так, как работает веб-пакет или как его поддерживать.

У меня есть 2 проекта: 1. consumer 2. dependency

Оба базовых модуля es6 связаны с помощью веб-пакета.

dependency модуль - это модуль многократного использования , предназначенный для повторного использования другими модулями.Модуль consumer использует модуль dependency в качестве зависимости npm.

dependency модуль поставляет компонент со своим собственным активом изображения (он (es6) также экспортируется из js).Выходные данные связывания правильно генерируют актив изображения вместе с сгенерированным js в выходном каталоге dist с правильным адресом импорта в сгенерированном js.Все хорошо здесь.

consumer модуль использует dependency.Сгенерированный consumer пакет идентифицирует dependency пакет правильно и включает его.

Однако, проблема в , изображение, которое было экспортировано / упаковано модулем dependency не легко включается в комплект consumer и не включается / копируется в соответствующую папку, указанную для ресурсов образа (в конфигурации загрузчика файлов) при выполнении веб-пакета в конфигурации consumer.


зависимость / src / index.js

import anyImage from './img/any.jpg'; // image any.jpg available at this path

const foo = function() {
    return "hello!";
};

export {foo, anyImage};

зависимость / webpack.config.js

const path = require('path');

module.exports = {
    entry: './src/index.js',

    output: {
        path: path.resolve(__dirname, 'dist'),
        filename: 'index.js',
        libraryTarget: 'umd'
    },

    module: {
        rules: [
            {
                test: /\.(png|jpg|gif)$/,
                use: [
                    {
                        loader: "file-loader",
                        options: {
                            name: "[name].[ext]"
                        }
                    }
                ]
            },
            {
                test: /\.js?$/,
                loader: 'babel-loader'
            }
        ]
    }
};

потребитель / src / index.js

import {foo, anyImage} from "dependency";
import placeholderImage from './img/placeholder_350x150.png';

document.getElementById('placeholderImage').src = placeholderImage;

setTimeout(() => {
    document.getElementById('placeholderImage').src = anyImage;
}, 2000);

потребитель / webpack.config.js

const path = require('path');

module.exports = {
    entry: './src/index.js',

    output: {
        path: path.resolve(__dirname, 'dist'),
        filename: 'my-widget.js',
        libraryTarget: 'umd'
    },

    module: {
        rules: [
            {
                test: /\.(png|jpg|gif)$/,
                use: [
                    {
                        loader: "file-loader",
                        options: {
                            name: "[name].[ext]",
                            publicPath: "/dist/"
                        }
                    }
                ]
            },
            {
                test: /\.js?$/,
                loader: 'babel-loader'
            }
        ]
    }
};

Заранее спасибо!

1 Ответ

0 голосов
/ 22 ноября 2018

я думаю, что вы можете сделать консольный журнал для anyImage в 'consumer / src / index.js' и 'dependency / src / index.js', я думаю, вы получите ответ.

импортированный файл 'anyImg' в проекте потребителя представляет собой просто строку - /static/img/xxx.png вместо пути к доступному изображению.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...