好的,根据我们的评论对话,我将为您提供步骤 1-4 的工作流程,但使用常规资产处理,而不是资产捆绑(我没有听说过,但也许其他人可以在那里详细说明)。
所以步骤:
- 将所有 scss 文件捆绑到 1 个 bundle.css
- 确保此捆绑包已缩小
- 添加资产管理以构建图像
- 添加资产管理以构建字体
重要的事情:
此工作流程基本上是通过配置构建的。package.json
使用该文件配置 npm 脚本,并使用config.webpack.js
. 这将允许您简单地运行 1 个命令来构建您的项目:npm run build
. 注意:为简单起见,我将忽略生产/开发/等环境并专注于单一环境。
package.json
:
这用于设置npm run build
在终端中输入时实际运行的命令(dir
当然来自项目)。
因为我们现在避免使用不同的环境,并且您没有使用 Typescript,所以这是一个非常简单的配置:
"scripts": {
"build": "webpack",
},
这就是您必须添加的所有内容。现在听起来很愚蠢,但是当项目变得更加复杂时,您会喜欢这些脚本,因此最好开始制作它们。
webpack.config.js
:主要提升将在此配置文件中进行。这基本上告诉 webpack 当你运行它时要做什么(这就是npm run build
正在做的事情)。
首先让我们安装一些插件:
npm install --save-dev file-loader
npm install --save-dev html-webpack-plugin
npm install --save-dev mini-css-extract-plugin
const path = require('path');
const HtmlWebpackPlugin = require('html-webpack-plugin');
module.exports = {
mode: 'production',
devtool: 'source-map'
entry: './client/src/app.jsx',
output: {
path: path.join(__dirname, 'client/dist/public'),
filename: 'bundle.[hash].js'
},
module: {
rules: [
{
test: /\.s?css$/,
use: [
{
loader: MiniCssExtractPlugin.loader,
options: {
hmr: false
}
},
'css-loader',
'sass-loader'
]
},
{
test: /\.(png|svg|jpg|gif)$/,
use: ['file-loader']
},
{
test: /\.(woff|woff2|eot|ttf|otf)$/,
use: [
'file-loader'
]
}
]
},
resolve: {
extensions: ['.js', '.json', '.jsx']
},
plugins: [
new HtmlWebpackPlugin({
filename: 'index.html',
template: './client/src/index_template.html'
}),
new MiniCssExtractPlugin({
filename: 'style.[hash].css',
chunkFilename: '[id].[hash].css'
}),
]
};
请注意,我添加了 htmlWebpackPlugin,因为它可以更轻松地自动引用正确的散列包。此外,我假设该应用程序是一个反应应用程序,但您可以将入口点更改为您的应用程序加载的位置。
如果不进行测试,这是很难做到的,但我希望这能给你足够的参考,让你知道你应该改变什么,做什么才能继续下去。
我再次强烈推荐这些webpack.js
指南和文档,它们非常详尽,一旦你开始掌握它,事情就会开始顺利进行。