В настоящее время я работаю над веб-приложением, используя React, Typcript и WebPack. Я хочу, чтобы WebPack генерировал образы Urls в соответствии с субдоменом, который я знаю только во время выполнения, а не во время компиляции.Как использовать переменную «__webpack_public_path__» в моей конфигурации WebPack?
Я прочитал это на документации WebPacks'S: http://webpack.github.io/docs/configuration.html#output-publicpath
Примечание: В случаях, когда в конечном итоге publicPath из выходных файлов не известен во время компиляции, он может быть оставлен пустым и устанавливается динамически на runtime в файле точки входа. Если вы не знаете publicPath во время компиляции, вы можете опустить его и установить webpack_public_path в своей точке входа.
webpack_public_path = myRuntimePublicPath
// остальная часть вашего входа приложения
Но я не могу заставить его работать.
Я установил переменную «webpack_public_path» в точку входа в приложение. Но как я могу использовать его значение в моей конфигурации webpack. мне нужно использовать его здесь:
"Модуль": { "правила": [{ "тест": /.(png|jpg|gif)(\?[\s\S] ? +) $ /, "грузчики": [
url?limit=8192&name=/images/[hash].[ext]
] } ] }
мне нужно сделать smething так:
"грузчики": [» URL? предел = 8192 & имя = __webpack_public_path__ /images/[hash].[ext] ']
ОТВЕТ
мне удалось заставить его работать. Поэтому в моем файле точки входа (start.tsx) я объявляю de __webpack_public_path__
бесплатный var перед импортом и присваиваю его значение после импорта.
/// <reference path="./definitions/definitions.d.ts" />
declare let __webpack_public_path__;
import './styles/main.scss';
/* tslint:disable:no-unused-variable */
import * as React from 'react';
/* tslint:enable:no-unused-variable */
import * as ReactDOM from 'react-dom';
import * as Redux from 'redux';
import { Root } from './components/root';
__webpack_public_path__ = `/xxxx/dist/`;
Теперь, общественный путь используется, когда у меня есть img
тег:
<img src={require('../../images/logo.png')} />
Превращается:
<img src='/xxxx/dist/images/125665qsd64134fqsf.png')} />
Спасибо за ваш Anwer. параметр 'name' существует, мы используем его, потому что у нас были проблемы с файлами, сгенерированными в неправильной папке. Мне удалось заставить его работать, я собираюсь обновить свой пост с ответом. – Aiso
Рад, что вы это сделали, мне любопытно увидеть ваш обновленный пост. –
Есть ли разница между загрузкой активов с помощью 'import' и' require'? – elQueFaltaba