【发布时间】:2020-04-03 23:54:45
【问题描述】:
我有一个完整的网站,我想为它设计一个构建工具。事实上,我选择了 Webpack 来做这件事。项目结构是这样的:
我有 nunjucks、html、css、sass 和 js 文件。我必须通过 webpack 捆绑它们。我的 webpack 配置文件在这里:
var HtmlWebpackPlugin = require('html-webpack-plugin')
const { CleanWebpackPlugin } = require('clean-webpack-plugin')
const path = require('path')
const CopyPlugin = require('copy-webpack-plugin')
const NunjucksWebpackPlugin = require('nunjucks-webpack-plugin')
module.exports = {
entry: ['./src/index.js'],
output: {
filename: 'bundle.js',
path: path.resolve(__dirname, 'dist')
},
devtool: 'inline-source-map',
devServer: {
contentBase: './dist',
writeToDisk: true
},
plugins: [
new CopyPlugin([
{ from: 'public/images', to: 'images' },
{ from: 'public/fonts', to: 'fonts' },
{ from: 'src/pages/about', to: '.' }
]),
new CleanWebpackPlugin(),
// new HtmlWebpackPlugin()
new HtmlWebpackPlugin({
title: 'Asset Management' //title of file.html
})
],
module: {
rules: [
{
test: /\.css$/,
use: ['style-loader', 'css-loader']
},
{
test: /\.s[ac]ss$/i,
use: [
// Creates `style` nodes from JS strings
'style-loader',
// Translates CSS into CommonJS
'css-loader',
// Compiles Sass to CSS
'sass-loader'
]
},
{
test: /\.(png|svg|jpg|gif)$/,
use: ['file-loader']
},
{
test: /\.(woff|woff2|eot|ttf|otf)$/,
use: ['file-loader']
},
{
test: /\.(njk|nunjucks)$/,
loader: 'nunjucks-loader'
},
{
// to auto refresh index.html and other html
test: /\.html$/,
loader: 'raw-loader',
exclude: /node_modules/
},
{
test: /\.html$/,
use: [
{
loader: 'html-loader',
options: {
interpolate: true
}
}
]
}
]
}
}
“index.js”文件也是这样的:
import _ from 'lodash'
import './pages/about/about_moon.scss'
import './pages/about/about_moon.html'
var tpl = require('./pages/home/index_moon.njk')
var html = tpl.render({ message: 'Foo that!' })
function component() {
return element
}
document.body.appendChild(component())
我配置了“package.json”文件并定义了运行 webpack 的脚本:
"start": "webpack-dev-server --open",
"build": "webpack"
问题是当我运行npm run build 时,创建了 dist 文件夹并且它有一个 html 文件,但没有什么可显示的。我已经有一些 html 文件并想将它们全部捆绑到“bundle.js”,但我不知道如何。你能告诉我如何捆绑这个项目吗?
提前谢谢你。
【问题讨论】:
-
你有 2 条 html 规则,我猜这是 index.html 为空的原因
标签: javascript webpack webpack-dev-server nunjucks build-tools