美文网首页
webpack4 一些常用配置

webpack4 一些常用配置

作者: _littleTank_ | 来源:发表于2019-09-26 13:17 被阅读0次
1、配置resolve extensions属性文件后缀处理
 resolve: {
        extensions: ['.js', '.json', '.vue', '.scss', '.css']
    },  

在导入语句没带文件后缀时,Webpack 会自动带上后缀后去尝试访问文件是否存在。 resolve.extensions 用于配置在尝试过程中用到的后缀列表,默认是:

extensions: ['.js', '.json']

也就是说当遇到 require('./test') 这样的导入语句时,Webpack 会先去寻找 ./test.js 文件,如果该文件不存在就去寻找 ./test.json 文件, 如果还是找不到就报错。

假如你想让 Webpack 优先使用目录下的 TypeScript 文件,可以这样配置:

extensions: ['.ts', '.js', '.json']
2、配置resolve alias全局变量
 resolve: {
        alias: {
            '@': path.join('src'),
            '@assets': path.join('src/assets'),
            '@static': path.join('static')
        }
    },  

项目结构如下:


结构.png

如果我在main.js里想引入base2.css,那么我们可以在mian.js里这样写

@import "@static/css/base2.css"

而不用找相对路径。

3、ProvidePlugin 自动加载模块,而不必到处 import 或 require 。

假如我们vue项目要使用:jQuery,那么怎么做呢?
我们先安装jQuery

cnpm i jQuery -S

在vue项目里我们必须先导入才能用,如下

import $ from "jquery"

如果页面很多都要用需要每个页面都导入,(或者提到入口文件,定义全局变量,但是也相对麻烦)

我们可以用webpack自带的ProvidePlugin

plugins: [
    //提供全局的变量,在模块中使用无需用require,import引入
    new webpack.ProvidePlugin({
      $: "jquery",
      jQuery: 'jquery'
    }),
  ]

这样就可以了

$('#item'); // <= 起作用
jQuery('#item'); // <= 起作用
// $ 自动被设置为 "jquery" 输出的内容
4、DefinePlugin

definePlugin 允许创建一个在编译时可以配置的全局常量。这可能会对开发模式和发布模式的构建允许不同的行为非常有用。如果在开发构建中,而不在发布构建中执行日志记录,则可以使用全局常量来决定是否记录日志。这就是 DefinePlugin 的用处,设置它,就可以忘记开发和发布构建的规则。

项目情况:在开发环境想要请求接口www.baidu.com,生产环境想要请求接口www.google.com,那么怎么办呢?在之前我们自己判断是开发环境或者生产环境来设置请求接口,但是现在DefinePlugin就可以帮我们搞定。

在webpack.dev.conf.js(开发环境)

plugins: [
    new webpack.DefinePlugin({
     'url':'www.baidu.com'
    }),
  ]

在webpack.pro.conf.js(生产环境)

plugins: [
    new webpack.DefinePlugin({
     'url':'www.google.com'
    }),
  ]

这样我们就可以在项目里直接获取到url的值

console.log(url)//dev环境下打印出www.baidu.com
console.log(url)//pro环境下打印出www.google.com
5、DefinePlugin

相关文章

网友评论

      本文标题:webpack4 一些常用配置

      本文链接:https://www.haomeiwen.com/subject/ttweyctx.html