Требуются ли точки входа для ресурсов, отличных от JavaScript, в веб-пакете 4?

Единственный способ, которым я успешно создал webpack для создания файла, отличного от JavaScript, - это включить entry для основного актива. Проблема в том, что веб-пакет генерирует .js файл, основанный на этом активе, а это не нужно. Является ли это правильным способом работы с активами, отличными от JavaScript, в конфигурации веб-пакета?

const path = require('path');
const ExtractTextPlugin = require('extract-text-webpack-plugin');

const outputDir = 'build';
const extractStylus = new ExtractTextPlugin('../css/screen.css');

module.exports = {
  entry: {
    app: './src/js/index.js',
    print: './src/js/print.js',
    stylus: './src/stylus/screen.styl'
  },
  module: {
    rules: [
      {
        test: /\.js$/,
        exclude: /node_modules/,
        use: {
          loader: 'babel-loader'
        }
      },
      {
        test: /\.styl$/,
        use: extractStylus.extract({
          fallback: 'style-loader',
          use: ['css-loader', 'stylus-loader']
        })
      }
    ]
  },
  plugins: [extractStylus],
  output: {
    filename: '[name].bundle.js',
    path: path.resolve(__dirname, `${outputDir}/js`)
  }
};

Конкретная линия является частью entry объект:

stylus: './src/stylus/screen.styl'

Без этой строки ничего не генерируется, но с этой строкой ожидаемый .css также как и stylus.bundle.js файл генерируется.

1 ответ

Я думаю, что вы неправильно понимаете, что entry свойство делает в конфигурации веб-пакета:

Точка входа указывает, какой модуль webpack должен использовать для построения своего внутреннего графа зависимостей. После входа в точку входа webpack определит, от каких других модулей и библиотек зависит эта точка входа (прямо или косвенно).

Каждая зависимость затем обрабатывается и выводится в файлы, называемые пакетами, о которых мы поговорим подробнее в следующем разделе.

[ источник, акцент мой]

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

Незначительная проблема создания файла JS, даже если вы обрабатываете только ресурсы, является следствием того, как обычно используется webpack - в качестве менеджера / компилятора ресурсов для некоторой логики приложения, написанной на JS. Итак, теоретически, если вам нужно было использовать скомпилированные ресурсы в стиле NodeJS requires, вы бы использовали сгенерированный stylus.bundle.js,