2017-01-04 8 views
1

Будучи новым в веб-пакете, ответ может смотреть на меня, но я не вижу его. Независимо от того, как я пытаюсь их передать, параметры файлового загрузчика не найдены.Параметры файлового загрузчика webpack не распознаются

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

webpack.config.prod.js

var path = require('path') 
var webpack = require('webpack') 
var HtmlWebpackPlugin = require('html-webpack-plugin') 


module.exports = { 
    entry: [ 
    './src/index.js' 
    ], 
    output: { 
    path: path.join(__dirname, 'dist'), 
    filename: 'idlink-1.1.1.js', 
    publicPath: '' 
    }, 
    plugins: [ 
    new webpack.optimize.OccurenceOrderPlugin(), 
    new webpack.NoErrorsPlugin(), 
    new webpack.optimize.UglifyJsPlugin(), 
    new webpack.DefinePlugin({'process.env.NODE_ENV': '"production"'}) 
    ], 
    module: { 
    loaders: [ 
     { 
     exclude: /node_modules/, 
     loader: 'babel', 
     query: { presets: ['react', 'es2015', 'stage-1'] } 
     }, 
     {test: /\.css$/, loader: "style-loader!css-loader" }, 
     {test: /\.scss$/, loaders: ["style", "css", "sass"]}, 
     {test: /\.less$/, loader: "style-loader!css-loader!less-loader" }, 
     { 
     test: /\.(jpe?g|png|gif|svg|pdf)$/i, 
     loader: "file", 
     options: { publicPath: 'https://apps.ixordocs.be/'} 
     }, 
     {test: /\.gif$/, loader: "url-loader?mimetype=image/png" } 
    ] 
    }, 
} 

Я также попытался с loader: "file-loader"

, а также добавлены опции, как одну строку, как этот

loader: "file?name=[name].[ext]&publicPath=https://apps.ixordocs.be/"

Некоторые контекстные данные: Я не хочу иметь hardcoded publicPath, определенный в моем output: {}, я хочу получить его динамически из параметра, помещенного в div, в который загружен мой плагин.

Я пробовал использовать переменную __webpack_public_path__, и она работает, но не для изображений. Общественный путь захватывается из параметра, устанавливается и используется для извлечения фрагмента. Так или иначе, это не влияет на изображения. Если я жестко задаю публичный патч при выходе, он работает для изображений. Это заставляет меня думать, что есть проблема с сообщением загрузчика с переменной, поэтому идея состоит в том, чтобы заставить параметры работать и в конечном итоге попытаться передать динамический publicPath там.

+0

Во-первых, я не вижу каких-либо примеров или документации, которая предполагает, что вы можете поместить url в publicPath, это всегда локальный путь к файловой системе. Это, похоже, не является инструментом для решения ваших требований. – Gimby

+0

Спасибо за ввод. Я тоже боялся этого, поэтому я также попробовал его по местному пути. К сожалению, это не только параметры, связанные с пути, которые не найдены. Просто никаких параметров не передается. – TDeSmet

+0

Возможно, глупый вопрос, но ... вы действительно установили модуль файлового загрузчика? – Gimby

ответ

0

Ваш вопрос полностью действителен на основе документации погрузчика на обоих загрузчиках GitHub repo и webpack docs. Проблема в том, что функции publicPath и outputPath реализованы в pull request, который объединен, но еще не выпущен в новую версию загрузчика, а README на npm не упоминает об этом по той же причине.
Вы все еще можете использовать эти функции, установив из репо GitHub npm install webpack/file-loader --save-dev и ваши варианты должны работать. Если не попробовать заменить options на query.

{ 
    test: /\.(jpe?g|png|gif|svg|pdf)$/i, 
    loader: "file-loader", 
    query: { publicPath: 'https://apps.ixordocs.be/'} 
} 

Использование URL-адреса для publicPath также справедливо, потому что часто случается, что вы хотите загрузить свои активы из CDN или другого сервера.