Требуются ли точки входа для ресурсов, отличных от 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 определит, от каких других модулей и библиотек зависит эта точка входа (прямо или косвенно).
Каждая зависимость затем обрабатывается и выводится в файлы, называемые пакетами, о которых мы поговорим подробнее в следующем разделе.
[ источник, акцент мой]
Без указания entry
webpack не знает, где искать ваши файлы; даже если граф зависимостей не был направленным (что и есть), вам нужно указать веб-пакет хотя бы на одну точку графика.
Незначительная проблема создания файла JS, даже если вы обрабатываете только ресурсы, является следствием того, как обычно используется webpack - в качестве менеджера / компилятора ресурсов для некоторой логики приложения, написанной на JS. Итак, теоретически, если вам нужно было использовать скомпилированные ресурсы в стиле NodeJS require
s, вы бы использовали сгенерированный stylus.bundle.js
,