webpack配置文件的分离
配置文件的分离
目的就是让开发环境, 生产环境,测试环境的配置分隔开
步骤一:
在项目根目录下创建一个 build 文件夹专门用来存放配置文件,再创建三个js文件,
- base.config.js 文件,存放基本配置,开发阶段和生产阶段都需要的配置, 也就是公共配置
- dev.config.js 文件,存放只在开发阶段用到的配置
- prod.config.js 文件,存放只在生产阶段用到的配置
如图所示:
步骤二
现在需要将三个配置文件联系到一起,使用webpack-merge
,安装: npm install webpack-merge@4.1.5 --save-dev
接下来在 dev.config.js 文件和 prod.config.js 文件中使用webpack-merge
// prod.config.js
const UglifyJsPlugin = require('uglifyjs-webpack-plugin');
const webpackMerge = require('webpack-merge'); //1.引入webpackMerge
const baseConfig = require('./base.config'); //2.引入base.config.js
module.exports = webpackMerge(baseConfig,{//3.使用webpackMerge进行合并
plugins: [
// make sure to include the plugin for the magic
new UglifyJsPlugin(),
],
})
// dev.config.js
const webpackMerge = require('webpack-merge'); //1.引入webpackMerge
const baseConfig = require('./base.config'); //2.引入base.config.js
module.exports = webpackMerge(baseConfig, {
devServer: { //这个配置只在开发阶段有用,打包生成最终代码的时候,这个配置就没有用了
contentBase: './dist',
inline: true
}
})
公共配置项
// base.config.js
const path = require('path');
const VueLoaderPlugin = require('vue-loader/lib/plugin');
var HtmlWebpackPlugin = require('html-webpack-plugin');
module.exports = {
//需要导出的文件
entry: './src/main.js',
// 导出的路径
output: {
path: path.resolve(__dirname, '../dist'),
filename: 'bundle.js',
// 存储图片的打包地址
// publicPath: 'dist/'
},
plugins: [
// make sure to include the plugin for the magic
new VueLoaderPlugin(),
new HtmlWebpackPlugin({
template: 'index.html'
}),
],
module: {
rules: [
{
test: /\.less$/,
use: [{
loader: "style-loader" // creates style nodes from JS strings
}, {
loader: "css-loader" // translates CSS into CommonJS
}, {
loader: "less-loader" // compiles Less to CSS
},]
},
{
test: /\.css$/,
use: [
{loader: "style-loader"},
{loader: "css-loader"}
]
},
// 打包图片
{
test: /\.(png|jpg|gif)$/,
use: [
{
loader: 'url-loader',
options: {
// 当加载的图片, 小于limit时, 会将图片编译成base64字符串形式.
// 当加载的图片, 大于limit时, 需要使用file-loader模块进行加载.
//file-loader模块只需要安装,不用进行任何人配置
limit: 8192,
name: 'img/[name].[hash:8].[ext]'
}
}
]
},
// ES6转ES5
{
test: /\.js$/,
exclude: /(node_modules|bower_components)/,
use: {
loader: 'babel-loader',
options: {
presets: ['es2015']
}
}
},
// 使用vue
{
test: /\.vue$/,
use: ['vue-loader']
}
]
},
resolve:{
// 省略文件后缀
extensions:['.js', '.css', '.vue'],
// alias 别名
alias:{
'vue$': 'vue/dist/vue.esm.js'
}
}
};
步骤三
在 package.json 文件里的scripts中配置命令:
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"build": "webpack --config ./build/prod.config.js",
"dev": "webpack-dev-server --open --config ./build/dev.config.js"
},
- 在执行
npm run build
的时候,会使用prod.config.js配置文件 - 在执行
npm run dev
的时候,会使用dev.config.js配置文件
最后,注意一下在 base.config.js 中 output 的配置
module.exports = {
entry: './src/main.js',
output: {
//注意这个地方是 ../dist,如果直接写 dist ,它会在build文件夹下生成dist文件夹
path: path.join(__dirname, '../dist'),
filename: 'bundle.js',
}
}
参考博文:https://blog.csdn.net/weixin_43974265/article/details/112723994
webpack配置文件的分离的更多相关文章
- webpack基础+webpack配置文件常用配置项介绍+webpack-dev-server
一.webpack基础 1.在项目中生成package.json:在项目根目录中输入npm init,根据提示输入相应信息.(也可以不生成package.json文件,但是package.json是很 ...
- Webpack 2 视频教程 017 - Webpack 2 中分离打包项目代码与组件代码
原文发表于我的技术博客 这是我免费发布的高质量超清「Webpack 2 视频教程」. Webpack 作为目前前端开发必备的框架,Webpack 发布了 2.0 版本,此视频就是基于 2.0 的版本讲 ...
- 调试webpack配置文件
webpack运行在nodejs上,调试webpack就相当于调试nodejs程序.下面介绍一种通用的办法. 1.配置package.json,加一个debug. { 'scripts': { 'de ...
- webpack 配置文件相关解说
博客地址:https://ainyi.com/10 webpack - 什么是webpack: WebPack可以看做是模块打包机:它做的事情是,分析你的项目结构,找到JavaScript模块以及其它 ...
- react暴露webpack配置文件
在react中安装create-react-app脚手架新建项目,但是新建的项目中没有配置文件. webpack的配置文件webpack.base.conf.js隐藏在了node_modules文件夹 ...
- 为什么我们要做三份 Webpack 配置文件
时至今日,Webpack 已经成为前端工程必备的基础工具之一,不仅被广泛用于前端工程发布前的打包,还在开发中担当本地前端资源服务器(assets server).模块热更新(hot module re ...
- webpack实践(二)- webpack配置文件
webpack系列博客中代码均在github上:https://github.com/JEmbrace/webpack-practice <webpack实践(一)- 先入个门> < ...
- 使用Webpack的代码分离实现Vue懒加载(译文)
当一个Vue的项目体积变得十分庞大的时候,使用Webpack的代码分离功能将Vue Components,routes或Vuex的代码进行分离并按需加载,会极大的提高App的首屏加载速度. 在Vue的 ...
- 使用Webpack的代码分离实现Vue懒加载
当一个Vue的项目体积变得十分庞大的时候,使用Webpack的代码分离功能将Vue Components,routes或Vuex的代码进行分离并按需加载,会极大的提高App的首屏加载速度. 在Vue的 ...
- 3.WebPack配置文件
一.为什么需要WebPack配置文件 引用自官方: 在 webpack 4 中,可以无须任何配置使用,然而大多数项目会需要很复杂的设置,这就是为什么 webpack 仍然要支持 配置文件.这比在终端( ...
随机推荐
- vue2路由导航守卫(钩子函数)
https://router.vuejs.org/zh/guide/advanced/navigation-guards.html#%E5%85%A8%E5%B1%80%E5%89%8D%E7%BD% ...
- MQTT-主题基础
MQTT主题 MQTT的主题是一个utf-8编码的字符串,最大长度65535字节,严格区分大小写 MQTT主题支持分层结构,主题分隔符用'/'表示,主题的层级长度可以为0 # 将主题划分为3个层级 ' ...
- vue全家桶进阶之路50:Vue3 环境变量+跨域设置实例
使用.env加后缀的方式来建立某个模式下的环境变量, 例如:项目根目录新建两个环境变量文件(development开发环境和production生产环境): .env.development .env ...
- 简单记录一下从网上找到的python的渗透方面的第三方库
python的hacker三方库 Scapy, Scapy3k:发送,嗅探和剖析并伪造网络数据包,可以做交互式应用或单纯的作为库来使用 pypcap, Pcapy and pylibpcap:几个不同 ...
- 最通俗易懂的flex讲解
30分钟彻底弄懂flex布局 欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 本文由elson发表于云+社区专栏 目前在不考虑IE以及低端安卓机(4.3-)的兼容下,已经可以放心使用fle ...
- PyInstaller 完美打包 Python 脚本,输出结构清晰、便于二次编辑的打包程序
引入问题 如果我要写一个 Python 项目,打包成 exe 运行(方便在没有 Python 的电脑上使用),我需要打包出的根目录结构美观,没有多余的.杂乱的依赖文件在那里碍眼,而且需要在发现 bug ...
- 大型 3D 互动开发和优化实践
开发背景 得益于"元宇宙"概念在前段时间的爆火,各家公司都推出了使用 3D 场景的活动或频道. 3D 场景相比传统的 2D 页面优点是多一个维度,同屏展示的内容可以更多,能完整的展 ...
- 【技术积累】Python中的PyTorch库【一】
PyTorch库介绍 PyTorch是一个基于Python的科学计算库,用于构建深度学习神经网络.它主要由两个部分组成:一个是PyTorch Tensor库,提供了类似于NumPy的数组操作,但是支持 ...
- CKS 考试题整理 (13)-使用 sysdig 检查容器里里的异常进程
Task 使用运行时检测工具来检测 Pod tomcat 单个容器中频发生成和执行的异常进程 有两种工具可供使用: sysdig falco 注: 这些工具只预装在cluster的工作节点,不在 ma ...
- @Inherited元注解的使用
@Inherited注解标记其他的注解用于指明标记的注解是可以被自动继承的. 注意:此注解只对注解标记的超类有效,对接口是无效的. 示例: 先声明两个用@Inherited标记的注解,@Name和@A ...