2016-10-25 2 views
3

Я использую хранилища django для обслуживания своих статических файлов из s3 и в настоящее время перемещаю их все в пакет webpack. Это хорошо работает с django-webpack-loader, которому все равно, где django находит связку.Webpack: Загрузка фрагментов Codesplit из S3 Использование хранилища Django

Проблема заключается в том, что, когда я начинаю определять точки разделения с помощью require.ensure, пул пытается загрузить кусок, используя относительный путь, вместо ведро s3, поскольку функция привязки кодов webpack не зависит от хранилища django.

Есть ли способ внедрить пользовательскую логику для извлечения кусков по требованию? Я не над жестким кодированием моего пакета s3 bundle в конфигурационном файле, но ничего, что я пробовал до сих пор, не работал.

Вот мой WebPack конфигурации (написано в CoffeeScript)

path = require "path" 
webpack = require 'webpack' 
BundleTracker = require 'webpack-bundle-tracker' 
ExtractTextPlugin = require "extract-text-webpack-plugin" 
loaders = require "./loaders.coffee" 

module.exports = 
    context: __dirname 
    entry: require "./entries.coffee" 
    output: 
     path: path.resolve 'app/static/dist/' 
     filename: '[name].js' 
     sourceMapFilename: "[name].map.js", 
    devtool: "source-map" 

     plugins: [ 

      new BundleTracker filename: './webpack/webpack-stats-prod.json' 

      new webpack.DefinePlugin 
      'process.env': 
       'NODE_ENV': JSON.stringify 'production' 

      new webpack.optimize.OccurenceOrderPlugin 

      new ExtractTextPlugin "[name].css" 

      new webpack.optimize.UglifyJsPlugin 
      sourceMap: false 
      compressor: 
       warnings: false 


     ] 

    module: 
     loaders: loaders.production_loaders 

    resolve: loaders.resolution 

ответ

1

Оказывается, мне просто нужно установить опцию publicPath под output. Я установил свой сценарий, чтобы написать адрес ведра в ближайший файл.

{bucket} = require "./bucket.json" 


module.exports = 
    context: __dirname 
    entry: require "./entries.coffee" 
    output: 
     path: path.resolve 'app/static/dist/' 
     filename: '[name].js' 
     sourceMapFilename: "[name].map.js", 
     publicPath: bucket + "/static/dist/"