【问题标题】:Add a static prefix to urls generated in webpack为 webpack 中生成的 url 添加静态前缀
【发布时间】:2016-06-25 00:12:33
【问题描述】:

我想为 webpack 生成的每个静态 url 添加一个前缀(“/static/”)。但是我希望生成的包忽略这个,所以 app.js 和 staticfiles 都在同一个目录中。文件加载器允许使用 ?name=static/[name].[ext] 指定前缀,但我的包随后会出现在输出中的 static/ 目录中。

我想这样做是因为我正在从龙卷风中提供我的应用程序,所以每条路径都需要某种前缀,否则我无法提供主页

Webpack 配置

module: {
    loaders: [
        ...
        {test: /\.(jpg|ttf|html|eot|woff2?|svg)$/, loader: "file?name=static/[hash].[ext]"},
    ]
},

龙卷风配置

ROOT_DIR = os.path.abspath(os.path.dirname(__file__))

application = tornado.web.Application(handlers=[
        (r'/', MainHandler),
        (r'/socket', SocketHandler),
        (r'/utilization', UtilizationHandler)
    ],
    autoreload=True,
    debug=False,
    template_path=os.path.join(ROOT_DIR, 'templates'),
    static_path=os.path.join(ROOT_DIR, 'public'),
    static_url_prefix='/static/'
)

上面设置的static_url_prefix其实是默认的。我无法将其设置为空,否则根路径会转到 tornado 的 staticHandler 而不是我的 mainHandler

【问题讨论】:

标签: webpack


【解决方案1】:

在 webpack.config.js 中设置 publicPath 选项。

output: {
    path: "/home/proj/public/assets",
    publicPath: "/static/"
}

https://github.com/webpack/docs/wiki/configuration#outputpublicpath

【讨论】:

  • 感谢您和 Bob Sponge,这确实符合我的要求。关于在该段中未使用“前缀”一词的文档的强制性抱怨。一个主要问题是它似乎破坏了 devServer,有没有办法只在构建时设置选项?
  • 我通过在 package.json 的 npm run build 命令中添加 --output-public-path='/static/' 解决了这个问题,而不是在 webpack.config.js 中使用 publicPath
猜你喜欢
  • 2011-05-15
  • 2013-05-24
  • 1970-01-01
  • 2010-10-27
  • 1970-01-01
  • 1970-01-01
  • 2017-06-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多