之前搞过的webpack版本搭建vue脚手架项目,今天分享一下!
在读这篇文章之前你可能需要了解一些webpack的配置才行
否则可能看不懂部分配置
首先我们的项目的src目录结构如下
基本上与vue-cli3的结构一样 ,你可以直接创建vue-cli3的脚手架直接复制里面的项目目录结构
新增命令行
在package.json文件里面的scripts字段里面新增这样一条命令,这样我们就可以在控制台输入npm run build执行webpack.config.js里面的配置
"build": "webpack --config webpack.config.js "
以下这些配置是打包原生项目的配置,如果看不懂的话。可以读一下我另外两篇文章webpack配置--css和js兼容不同浏览器、webpack基础配置
const HtmlWebpackPlugin = require('html-webpack-plugin');
const { CleanWebpackPlugin } = require("clean-webpack-plugin");
const CompressionPlugin = require("compression-webpack-plugin");
const HtmlMinimizerPlugin = require("html-minimizer-webpack-plugin");
const MiniCssExtractPlugin = require("mini-css-extract-plugin");
const CssMinimizerPlugin = require("css-minimizer-webpack-plugin");;
const webpack = require('webpack'); // 访问内置的插件
const path = require('path');
const fs=require("fs");
const config = {
entry: {
index: './src/main.js'
},
output: {
filename: 'static/js/[name]_[hash].js',
path: path.resolve(__dirname, 'dist'),
environment: {
arrowFunction: false, //true默认箭头函数
}
},
module: {
rules: [
{
test: /\.html$/,
use: [
{
loader: 'html-loader',
options: {
// Disables attributes processing
sources: true,
},
},
],
generator: {
filename: "[name][ext]",
},
},
{
test: /\.(js|jsx)$/,
use: {
loader: 'babel-loader',
// es6转es5
options: {
exclude: 'node_modules',//必须排除掉node_modules否则会冲突到其他loader
presets: [
[
"@babel/preset-env",
{
"modules": false
}
]
],
plugins: [
[
"@babel/plugin-transform-runtime",
{
// corejs 3版本提供的内置函数,例如Promise,Set和Map,不然部分浏览器不兼容
"corejs": {
"version": 3,
"proposals": true
},
"useESModules": true
}
]
]