代码拉取完成,页面将自动刷新
const path = require("path")
const VueLoaderPlugin = require('vue-loader/lib/plugin')
const HTMLPlugin = require('html-webpack-plugin')
const isDEV = process.env.ENV === "development"
const webpack = require("webpack")
const MiniCssExtractPlugin = require("mini-css-extract-plugin")
const config = {
target: "web",
entry: path.join(__dirname, "src/index.js"),
output: {
filename:"bundle[hash:8].js",
path: path.join(__dirname, "dist")
},
//单独打包框架文件,让浏览器缓存时间更长
optimization:{
splitChunks:{
chunks: 'initial',
cacheGroups: {
// react: {
// test: /[\\/]node_modules[\\/](react|react-dom)/,
// priority: -1
// },
vue: {
test: /[\\/]node_modules[\\/](vue|vuex)/,
priority: -2
}
}
}
},
// resolve: {
// extensions: ['.js', '.vue', '.json'],
// },
//webpack原生只支持js文件类型,只支持ES5语法,我们使用以.vue文件名结尾的文件时,需要为其指定loader
module: {
rules: [
{
test: /\.vue$/,
loader: "vue-loader"
},
{
test: /\.jsx$/,
loader: "babel-loader"
},
// {
// test: /\.css$/,
// use: ["style-loader", "stylus-loader"]
// },
// {
// test: /\.styl/,
// use: [
// "vue-style-loader",
// "css-loader",
// {
// loader: "postcss-loader",
// // 直接使用stylus-loader生成好的sourceMap,提高编译速度
// options: {
// sourceMap: true,
// }
// },
// "stylus-loader"
// ],
// },
{
test: /\.(png|jpg|jpeg|gif|bmp|svg)$/,
use: [
{
loader: "url-loader",
// 用base64编码小图片减少http请求
options: {
limit: 1024,
name: "[name].[ext]"
}
}
],
},
]
},
plugins: [
new webpack.DefinePlugin({
"process.env": {
ENV: isDEV ? "'development'" : "'production'",
}
}),
// new webpack.NoEmitOnErrorsPlugin(),
new VueLoaderPlugin(),
new HTMLPlugin()
]
};
if (isDEV) {
config.output.filename="bundle[hash:8].js"
const loaderPlugin = {
//css预处理器,使用模块化的方式写css代码
//stylus-loader专门用来处理stylus文件,处理完成后变成css文件,交给css-loader.webpack的loader就是这样一级一级向上传递,每一层loader只处理自己关心的部分
test: /\.styl/,
use: [
'vue-style-loader',
'css-loader',
{
loader: 'postcss-loader',
options: { sourceMap: true }
},
'stylus-loader'
]
};
config.module.rules.push(loaderPlugin);
config.plugins.push(
new webpack.HotModuleReplacementPlugin(),
)
config.devtool = "#cheap-module-eval-source-map"
config.devServer = {
port: 8000,
host: "0.0.0.0",
// 显示错误到页面
overlay: {
errors: true,
},
//自动打开浏览器
// open: true,
// historyFallback:{
//
// }
// 热加载
hot: true,
}
}else {
// config.entry= {
// app:path.join(__dirname, "src/index.js"),
// vendor:['vue']
// }
config.output.filename="[name].[chunkHash:8].js"
const loaderPlugin ={
test: /\.styl/,
use: [
{
loader: MiniCssExtractPlugin.loader,
options: {
// you can specify a publicPath here
// by default it uses publicPath in webpackOptions.output
publicPath: './',
hmr: process.env.NODE_ENV === 'development',
},
},
'css-loader',
{
loader: 'postcss-loader',
options: { sourceMap: true }
},
'stylus-loader'
]
};
config.module.rules.push(loaderPlugin);
config.plugins.push(
new MiniCssExtractPlugin({
// Options similar to the same options in webpackOptions.output
// all options are optional
filename: 'styles.[contentHash].[name].css',
chunkFilename: '[id].css',
ignoreOrder: false, // Enable to remove warnings about conflicting order
})
)
}
module.exports = config
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。