我在Webpack文档中读到了这个: http://webpack.github.io/docs/configuration.html#output-publicpath 引用如下: 注意:如果输出文件的最终publicPath在编译时未知,可以将其留空,并在入口点文件中动态设置。如果在编译时不知道publicPath,可以省略它并在入口点上设置webpack_public_path。 webpack_public_path = myRuntimePublicPath // 其余应用程序入口
但我无法让它工作。我已经在我的应用程序入口点设置了webpack_public_path变量。但是我如何在我的Webpack配置中使用它的值? 我需要在这里使用它:
答复
"module": { "rules": [ { "test": /.(png|jpg|gif)(\?[\s\S]+)?$/, "loaders": [
url?limit=8192&name=/images/[hash].[ext]
] } ] }
我需要做类似于这样的事情:
"loaders": ['url?limit=8192&name=__webpack_public_path__/images/[hash].[ext]']
答案
我已经成功让它工作了。所以在我的入口文件(start.tsx)中,我在导入之前声明了 __webpack_public_path__
的自由变量,并在导入之后分配了它的值。
/// <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')} />
path-to-bundle
动态化呢? - gotson__webpack_public_path__
的上下文。这是一个全局变量,Webpack是否已经定义了它? - Patrick Michaelsen