- 目录结构如下,git地址github.com/DDXY1230/lx…
搭建步骤:
- 创建目录结构
- 创建package.json
npm init -y - 这里用的pnpm安装依赖,可以先安装pnpm
npm install pnpm -g - 安装依赖
pnpm webpack webpack-cli webpack-dev-server - 还需要装一些webpack的插件
pnpm add html-webpack-plugin - 环境搭建好之后装vue
pnpm add vue - 安装loader处理vue的单文件组件
pnpm add vue-loader@nextpnpm add @vue/compiler-sfc然后到webpack.config.js中去注册插件const { VueLoaderPlugin } = require('vue-loader/dist/index')
plugins: [
new htmlWebpackPlugin({
template: "./public/index.html"
}),
new VueLoaderPlugin(), // 这里注册才能识别vue单文件组件
new cleanWebpackPlugin()
]
- 在webpack.config.js中配置支持vue的loader
rules: [
{
test: /\.vue$/,
use: "vue-loader"
}
]
},
- 打包前清除一下dist目录用这个插件
pnpm add clean-webpack-plugin - 解析css文件
pnpm add css-loaderpnpm add style-loader配置lesspnpm add less less-loader
- 配置webpack.config.js =>module=>rules中添加loader
{
test: /\.css$/,
use: ["style-loader", "css-loader"]
},
{
test: /\.less$/,
use: ["style-loader", "css-loader", "less-loader"]
}
- 配置ts环境
pnpm add typescriptpnpm add ts-loader配置webpack.config.js
{
test: /\.ts$/,
loader: "ts-loader",
options: {
configFile: path.resolve(process.cwd(), "tsconfig.json"),
appendTsSuffixTo: [/\.vue$/]
}
}
- 接下来做一个美化webpack样式的功能,通过插件
pnpm add friendly-errors-webpack-plugin - cdn引入 会先加载cdn,比较考验网速,网速慢会导致网页的白屏事件比较长,优点是体积小
webpack.config.js
const { Configuration } = require("webpack"); //结合下面的注释就有智能提示了
const path = require("path");
const htmlWebpackPlugin = require("html-webpack-plugin");
const { CleanWebpackPlugin } = require("clean-webpack-plugin");
const { VueLoaderPlugin } = require("vue-loader/dist/index");
const FriendlyErrorsWebpackPlugin = require("friendly-errors-webpack-plugin")
/**
* @type {Configuration}
*/
const config = {
mode: "development",
entry: "./src/main.ts",
output: {
filename: "[hash].js",
path: path.resolve(__dirname, "dist"),
},
module: {
rules: [
{
test: /\.vue$/,
use: "vue-loader",
},
{
test: /\.css$/,
use: ["style-loader", "css-loader"],
},
{
test: /\.less$/,
use: ["style-loader", "css-loader", "less-loader"],
},
{
test: /\.ts$/,
loader: "ts-loader",
options: {
configFile: path.resolve(process.cwd(), "tsconfig.json"),
appendTsSuffixTo: [/\.vue$/],
},
},
],
},
devServer: {
port: 9009,
hot: true,
open: true,
proxy: {
/api': {
target: "",
rewrite:(path) => {
return path.replace(/^\/ap/,'')
}
}
}
},
resolve: {
alias: {
"@": path.resolve(__dirname, "src"),
extensions: [".vue", ".ts", ".js"],
},
},
stats: "errors-only",// 关闭一些没用的提示
plugins: [
new htmlWebpackPlugin({
template: "./public/index.html",
}),
new VueLoaderPlugin(),
new CleanWebpackPlugin(),
new FriendlyErrorsWebpackPlugin({
compilationSuccessInfo: {
messages: ['You application is running here: http://localhost:8080']
}
})
],
externals: {
vue: 'Vue' // 做性能优化 在index.html加<script src="https://unpkg.com/vue@next"></script>
}
};
module.exports = config;