Загрузить статический файл JSON в Webpack

у меня где-то в моем коде следующую конструкцию:

var getMenu = function () {
    return window.fetch("portal/content/json/menu.json").then(function (data) {
        return data.json();
    });
};

я попробовал в моем webpack.config.js это:

module: {
    loaders: [
        ...
        {
            test: /.json$/,
            exclude: /node_modules/,
            use: [
                'file-loader?name=[name].[ext]&outputPath=portal/content/json'
            ]
        },
        ...
   ]
}

структура проекта:

dist
  content
     json
        menu.json <- this is missing

src
  content
     json
       menu.json <- source file

вопрос:

как webpack копия src/content/json/menu.json до dist/content/json/menu.json ?

1 ответов


вы используете fetch запросить файл JSON, и это произойдет только во время выполнения. Кроме того, webpack обрабатывает только то, что импортировано. Вы ожидали, что он будет обрабатывать аргумент функции, но если webpack сделал это, каждый аргумент функции будет считаться модулем, и это нарушает любое другое использование этой функции.

если вы хотите, чтобы ваши погрузчики подействует, вы можете импортировать файл.

import './portal/content/json/menu.json';

вы также можете импортировать JSON и использовать его напрямую вместо извлечения его выполнения. Webpack 2 использует json-loader по умолчанию для всех .json файлы. Вы должны удалить .json правило, и вы импортируете JSON следующим образом.

import menu from './portal/content/json/menu.json';

menu - это тот же объект JavaScript, который вы получите от своего