【webpack4.0】---base.config.js基本配置(五)
时间:2019-08-13
本文章向大家介绍【webpack4.0】---base.config.js基本配置(五),主要包括【webpack4.0】---base.config.js基本配置(五)使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
一、创建项目初始化
1、初始化项目
npm init -y
2、创建
src
(用来存放开发环境的代码)文件夹。config
(用来存放webpack的配置项)文件夹3、安装webpack Webpack-cli
二、base.config.js文件
config文件夹下创建base.config.js
1、基本配置
constpath=require("path");
//定义入口文件路径和出口文件路径
constPATH={
app:path.join(__dirname,"../src/main.ts"),
build:path.join(__dirname,"../dist")
}
module.exports={
//入口文件路径
entry:{
app:PATH.app
},
output:{
//导出后文件的名称
filename:process.env.NODE_ENV!='production'?"js/[name].js":"js/[name].[hash:8].js",
//出口文件的路径
path:PATH.build
},
resolve:{
//优先引入的后缀文件
extensions:['.ts','.tsx','.js'],
//配置别名
alias:{}
}
}
三、html-webpack-plugin
1、安装
cnpm install html-webpack-plugin -D
2、使用
const HtmlWebpackPlugin =require("html-webpack-plugin");
module.exports={
plugins:[
newHtmlWebpackPlugin({
template:"../index.html",
filename:"index.html",
title:"vue"
})
]
}
四、loader处理JS文件
1、安装
cnpm install -D @babel/corebabel-loader @babel/preset-env @babel/preset-react @babel/plugin-transform-runtime @babel/polyfill
2、处理JS配置
module:{
rules:[
{
test:/\.js$/,
exclude:path.join(__dirname,"../node_modules"),
loader:"babel-loader"
}
]
},
3、根目录下创建.babelrc文件
{
"presets": [
[
"@babel/preset-env",
{
"targets": {
"browsers": ["last 2 versions"]
}
}
]
],
"plugins": ["@babel/plugin-transform-runtime"]
}
五、loader处理图片和字体图标
1、安装
cnpm install file-loader url-loader -D
2、基本使用
module.exports={
module:{
rules:[
{
test:/\.(png|jpg|gif|svg)$/,
loader: 'file-loader',
options: {
name: '[name].[ext]?[hash]',
publicPath: 'assets',
}
},
{
test: /\.(eot|svg|ttf|woff|woff2)$/,
use: [
{
loader: 'file-loader',
options: {
name: 'fonts/[name].[hash:8].[ext]'
}
}//项目设置打包到dist下的fonts文件夹下
]
},
]
}
}
七、loader处理ts文件
1、安装
cnpm install ts-loader -D
2、基本使用
module.exports={
module:{
rules:[
{
test: /\.tsx?$/,
loader: 'ts-loader',
exclude: /node_modules/,
options: {
appendTsSuffixTo: [/\.vue$/]
}
},
]
},
}
3、ts配置文件 根目录创建tsconfig.json
{
"compilerOptions": {
"experimentalDecorators": true, //开启装饰器@ (修饰器本质就是编译时执行的函数)
"strict": false, //启用所有严格类型检查选项
// 指定生成哪个模块系统代码
"module": "es2015",
"moduleResolution": "node",
"target": "es5",//编译目标平台
"allowJs":true,//允许编译javascript文件
"noImplicitAny": false, // 在表达式和声明上有隐含的'any'类型时报错。
"allowSyntheticDefaultImports": true,
"lib": [
"es5",
"es2015",
"es2016",
"es2017",
"dom"
]
},
"include": ["./**/*.ts"]
}
4、ts识别vue文件 根目录下创建sfc.d.ts
/**
* 告诉 TypeScript *.vue 后缀的文件可以交给 vue 模块来处理
* 而在代码中导入 *.vue 文件的时候,需要写上 .vue 后缀。
* 原因还是因为 TypeScript 默认只识别 *.ts 文件,不识别 *.vue 文件
*/
declaremodule"*.vue"{
importVuefrom'vue'
exportdefaultVue
}
八、baset.config.js完整代码
constpath=require("path");
constHtmlWebpackPlugin =require("html-webpack-plugin");
constVueLoaderPlugin=require('vue-loader/lib/plugin')
//定义入口文件路径和出口文件路径
constPATH={
app:path.join(__dirname,"../src/main.ts"),
build:path.join(__dirname,"../dist")
}
module.exports={
//入口文件路径
entry:{
app:PATH.app
},
output:{
//导出后文件的名称
filename:process.env.NODE_ENV!='production'?"js/[name].js":"js/[name].[hash:8].js",
//出口文件的路径
path:PATH.build
},
resolve:{
//优先引入的后缀文件
extensions:['.ts','.tsx','.js'],
//配置别名
alias:{}
},
module:{
rules:[
{
test:/\.js$/,
exclude:path.join(__dirname,"../node_modules"),
loader:"babel-loader"
},
{
test:/\.vue$/,
exclude:path.join(__dirname,"../node_modules"),
loader:"vue-loader"
},
{
test:/\.(png|jpg|gif|svg)$/,
loader: 'file-loader',
options: {
name: '[name].[ext]?[hash]',
publicPath: 'assets',
}
},
{
test: /\.(eot|svg|ttf|woff|woff2)$/,
use: [
{
loader: 'file-loader',
options: {
name: 'fonts/[name].[hash:8].[ext]'
}
}//项目设置打包到dist下的fonts文件夹下
]
},
{
test: /\.tsx?$/,
loader: 'ts-loader',
exclude: /node_modules/,
options: {
appendTsSuffixTo: [/\.vue$/]
}
},
]
},
plugins:[
newHtmlWebpackPlugin({
template:"./index.html",
filename:"index.html",
title:"vue"
}),
newVueLoaderPlugin()
]
}
原文地址:https://www.cnblogs.com/yebai/p/11348428.html
- Java中的宏变量,宏替换详解。
- 类、变量、块、构造器、继承初始化顺序,终极解答。
- Spring Boot Debug调试
- Maven精选系列--classifier元素妙用
- PostgreSQL里面的一些命令小结
- Java中创建String的两道面试题及详解
- PostgreSQL主备环境搭建
- Tomcat集群session复制与Oracle的坑。。
- 用Keras+TensorFlow,实现ImageNet数据集日常对象的识别
- JavaWeb项目架构之Elasticsearch日志处理系统
- 分布式服务防雪崩熔断器,Hystrix理论+实战。
- JavaWeb项目架构之Kafka分布式日志队列
- 如何让Git记住用户名和密码
- 金融系统中正确的金额计算及存储方式
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Openssl实现双向认证教程(附服务端客户端代码)
- centos8使用Docker部署Django项目的详细教程
- ubuntu18.04 安装qt5.12.8及环境配置的详细教程
- 安装Ubuntu20.04与安装NVIDIA驱动的教程
- Ubuntu下安装nvidia显卡驱动(安装方式简单)
- Ubuntu 20.04 apt 更换国内源的实现方法
- Android设计模式之单例模式解析
- Android屏蔽软键盘并且显示光标的实例详解
- Android实现底部缓慢弹出菜单
- Ubuntu20的tzselect设置时间失效的问题,树莓派服务器(推荐)
- 安装Ubuntu 20.04后要做的事(小白教程)
- Ubuntu20.04安装Python3的虚拟环境教程详解
- Android编程实现播放视频时切换全屏并隐藏状态栏的方法
- Android UI设计与开发之仿人人网V5.9.2最新版引导界面
- PopupWindow使用方法详解