广告
返回顶部
首页 > 资讯 > 前端开发 > node.js >webapck4配置文件无效怎么办
  • 261
分享到

webapck4配置文件无效怎么办

2024-04-02 19:04:59 261人浏览 独家记忆
摘要

这篇文章给大家分享的是有关WEBapck4配置文件无效怎么办的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。webpack@4.x的变化先来说下webpack4和之前版本里一些主要

这篇文章给大家分享的是有关WEBapck4配置文件无效怎么办的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。

webpack@4.x的变化

先来说下webpack4和之前版本里一些主要的变化:

1、webpack不再支持node v4,这是因为新的webpack和附属插件使用了es6的语法,v4版本对es6不是很到位,所以,就不伺候了。

2、开始采取约定优于配置的思路,webpack@4.x里把很多选项都设置了默认值,比如入口就是./src,输出目录就是./dist,当然如果你自己去设置,它也不会拦着。所以在用webpack@4.x的时候,我们甚至都可以没有webpack.config.js这个配置文件也能一样打包。

3、拆分了旧版本里的webpack,分成了用来处理逻辑的webpack和提供可执行命令的webpack-cli,这也是有的同学把webpack装成新版本以后会报找不到webpack-cli模块这个错误的原因。

4、添加了mode选项,用来区分编译的环境,提供了development、production和none三个选项,理论上这个选项是强制指定的,其实不指定的话它也是有默认值的,但会给出一个warning,官方这么强烈建议了,就显式的指定一下吧。指定方式有两种,一是在启动命令里:

./node_modules/.bin/webpack --mode production

另外一种就是在配置文件里指定,方式如下:

var config = {
  mode: 'production' // 可选development、production和none
}

5、配置上的变动,类似删除了commonChunksPlugin,用optimization来代替这种。还有loader的用法也和1.15.0不一样了,但这个升级是在之前版本里就有的,不是webpack@4.x带来的。

6、性能优化,提高了打包性能。另外从webpack2起,引入了Tree-shaking机制来提出没有被引用的模块。它的原理是按着引用关系重新建立一个新的依赖树,而没有被引用的模块就不会被打包到最后的代码里。之前的压缩优化方式是先把所有模块都挂到树上,然后通过分析后,删掉没被引用的模块。从字面意思来看,我觉得原来的方式更像在摇树,把没用的摇下来。这两种方式最后压缩完的结果可能类似,但设计思路完全是从两个方向走的。

7、其他。以上这些就是一些比较主要的变化,更详细的升级文档可以参考下官方的说明:https://GitHub.com/webpack/webpack/releases

前言

升级webpack4,一定要去看文档,特别是 更新说明 ,不要自持用过原本webpack就自己开始折腾。折腾到后面,可能就默默流下眼泪了。

webpack4的变化

webpack-cli抽离

webpack-cli被单独拆了出来,使用的时候如果只是全局装了CLI,直接执行的时候是可以的。

webpack --config ./config/webpack.dev.js

如果是写在npm hook里面会发现有点问题:

//package.JSON
"scripts": {
  "dev": "webpack --config ./config/webpack.dev.js"
 }
//shall
npm run dev

此时就会给提示:

One CLI for webpack must be installed. These are recommended choices, delivered as separate packages:
 - webpack-cli (Https://github.com/webpack/webpack-cli)
   The original webpack full-featured CLI.
 - webpack-command (https://github.com/webpack-contrib/webpack-command)
   A lightweight, opiNIOnated webpack CLI.
We will use "npm" to install the CLI via "npm install -D".
Which one do you like to install (webpack-cli/webpack-command):

如果是我没有全局装,我肯定会意识到要选一个,这个坑关键是我全局装了。所以就在那折腾半天。

其实官方文档开头就说明了。

npm install webpack webpack-cli --save-dev

安装完成之后,继续执行发现有warning:

WARNING in configuration
The 'mode' option has not been set, webpack will fallback to 'production' for this value. Set 'mode' option to 'development' or 'production' to enable defaults for each environment.
You can also set it to 'none' to disable any default behavior. Learn more: https://webpack.js.org/concepts/mode/

mode规则

配置规则:必须在production 和 development之间选择一种,以便webpack 使用相应模式的内置优化

  1. production支持所有类型的优化已生成最优bundles

  2. development允许注释、提示和eval devtool devtool的差别可以参考这里

  3. production不支持watching、development针对快速增量重建进行了优化

  4. production支持 module concatenating(Scope Hoisting)即作用域提升,可以将模块打包在一个函数里,这样减少了函数声明,文件体积也会减小。 详细参考看这里

  5. process.env.NODE_ENV被设置用来区分环境(仅仅在构建代码而非config里面)

  6. 有一个hidden none mode的模式可以禁用所有内容

用法:

1、配置文件中:

module.exports = {
entry: Entrys,
mode: 'development'
}

2、cli 参数传入

webpack --mode=development

两种方式都是可行的,不过我遇到过一个很坑的问题,困扰自己好几天,最后知道真相的自己眼泪掉下来后面再提这个问题。

零配置快速开始

因为一直被吐槽配置太累,加上parcel给的压力,webpack4也支持零配置打包了。

如果没有配置文件,会默认以./src/index.js作为entry开始打包。

如果配置了webpack.config.js或者指定了--config 的文件路径,则依据对应配置文件开始。

问题表现

在webpack.config.js中配置了entry、mode等相关属性,配置文件如下:

module.export = {
  mode:'production',
  entry:{
    app:'./src/test.js',
    index:'./src/test.js'
  },
  output: {
    path: process.cwd() + '/dist',
    filename: '[name].[hash].js',
    chunkFilename: '[name].[chunkhash].js',
    crossOriginLoading: 'anonymous'
  },
  cache: true,
  devtool: 'cheap-source-map',
  externals: {
    Jquery: 'jQuery'
  },
  module: {
    rules: [
      {
        test: /\.(js|jsx)?$/,
        include: [
          path.resolve(__dirname, "../src")
        ],
        exclude: [
          'node_modules',
          path.resolve(__dirname, "../node_modules")
        ],
        use: [
          {
            loader: 'babel-loader',
            options:{
              presets:['es2015']
            } 
          }
        ]
      }
    ]
  },
  resolve: {
    modules: [
      'node_modules'
    ],
    extensions: [".js", ".json", ".jsx", ".CSS"],
  },
  devServer: {
    proxy: { // proxy URLs to backend development server
      '/api': 'http://localhost:3000'
    },
    contentBase: path.resolve(__dirname, "../dist"),
    hot: true,
    open:true
  },
  plugins: [
    new CleanWebpackPlugin(['dist']),
    new htmlWebpackPlugin({
      title:'test'
    }),
    new webpack.HotModuleReplacementPlugin()
  ]
}

package.json命令配置:

"scripts": {
  "build": "webpack --config webpack.prod.js"
 }
//执行打包
npm run build

发现始终会有上面选择mode类型的提示,这让人不能接受,另外提示没有./src/index.js文件,但是我的配置入口是别的文件,这样让人很莫名

ERROR in Entry module not found: Error: Can't resolve './src' in '/Users/   }

版本统一

初步猜想是版本问题,确实也有issue上提到过某些版本存在问题,对照着官方demo定版本之后问题依然存在。

猜测:应该是配置文件存在错误

配置检查

将官方最基本的配置拉进来拷贝进来试了一下,依然存在问题没能解决。

猜测:本地的环境存在问题,npm,node等版本

查看之后发现版本都是满足的。

运行demo

将demo拉到本地并启动,demo正常打包,说明本地环境是ok的。那么问题就明显了,我的配置文件或者项目搭建有问题,对照着demo的配置项,配置项没有明显问题,这样的话将,配置信息放入到demo中去,修改之后发现起作用,我又重新审视了下我的配置文件,不仅仅局限于配置部分的时候,发现

//我的写法,这样webpack拿到的就是undefined了。
module.export
//别人的demo
module.exports

webpack的兼容处理

webpack会将 webpack --config 传入的文件与本身默认配置进行merge,保证本身打包不出错。为了证明我们的推论,将配置文件只剩下output属性,并加上src/index.js

module.exports = {
  output: {
    path: process.cwd() + '/dist1',
    // 直接的入口模zzz块名
    filename: '[name].js',
    // 非入口模块,也就是不需要打包到一起的,但又可能会用到,
    // 这不就是按需加载的么
    chunkFilename: '[name].[chunkhash].js',
    crossOriginLoading: 'anonymous'
  }
}

执行之后会发现打包到/dist1下面。所以上面写错module.exports的时候,走的完全是默认配置。前面的log打在了module.exports之前执行是正确的。

感谢各位的阅读!关于“webapck4配置文件无效怎么办”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!

--结束END--

本文标题: webapck4配置文件无效怎么办

本文链接: https://www.lsjlt.com/news/69162.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • webapck4配置文件无效怎么办
    这篇文章给大家分享的是有关webapck4配置文件无效怎么办的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。webpack@4.x的变化先来说下webpack4和之前版本里一些主要...
    99+
    2022-10-19
  • webpack配置proxyTable时pathRewrite无效怎么办
    这篇文章主要介绍了webpack配置proxyTable时pathRewrite无效怎么办,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。we...
    99+
    2022-10-19
  • JS设置时间无效怎么办
    这篇文章主要为大家展示了“JS设置时间无效怎么办”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“JS设置时间无效怎么办”这篇文章吧。在发送短信息验证码的时候要用到...
    99+
    2022-10-19
  • 云服务器配置端口,并没有生效文件怎么办
    如果您的云服务器配置端口已生效,但您无法连接到该端口,请检查您的网络连接和管理工具是否正确配置了您的网络设置。 首先,检查您的网络设置。确保您启用了防火墙,以保护您的网络和数据。如果您的网络不允许访问Internet或VPN连接,那么您可...
    99+
    2023-10-26
    端口 服务器配置 文件
  • php不能加载配置文件怎么办
    这篇文章主要介绍了php不能加载配置文件怎么办,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。php不能加载配置文件的解决办法:首先通过“php --ini”命令查看是否加载了...
    99+
    2023-06-14
  • 云服务器配置端口,并没有生效文件夹怎么办
    如果您的云服务器配置了端口,并且没有生效文件夹,那么您可以尝试以下几种步骤来解决问题: 检查您的计算机上是否开启了防火墙或网络防火墙。如果开启了,并且没有启用,那么您可以在防火墙或网络防火墙上设置阻止端口或IP地址过滤。 使用防火墙工具...
    99+
    2023-10-27
    端口 文件夹 服务器配置
  • css中line-height设置无效怎么办
    这篇文章给大家分享的是有关css中line-height设置无效怎么办的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。我们先写下这一串代码:<!DOCTYPE ht...
    99+
    2022-10-19
  • uniapp中nvue设置px无效怎么办
    随着跨平台技术的不断发展,Uni-app作为一种基于Vue.js开发跨平台应用的框架,受到了越来越多开发者的关注和喜爱。其中,nvue作为一个特别在APP开发中广泛使用的组件,拥有着更高的性能表现以及更好的用户体验,同时在设计布局时也支持使...
    99+
    2023-05-14
  • vue admin element noCache设置无效怎么办
    这篇文章主要为大家展示了“vue admin element noCache设置无效怎么办”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“vue admin el...
    99+
    2022-10-19
  • log4j配置文件不生效怎么解决
    当log4j配置文件不生效时,可以按照以下步骤来解决问题: 检查配置文件路径:确保log4j配置文件的路径是正确的,并且在类路径...
    99+
    2023-10-25
    log4j
  • linux怎么使配置文件立即生效
    在Linux中,配置文件立即生效的方法取决于配置文件的类型和应用程序的类型。以下是一些常见的方法:1. 重启相应的服务:对于大多数服...
    99+
    2023-09-26
    linux
  • 配置文件php.ini不生效怎么解决
    今天小编给大家分享一下配置文件php.ini不生效怎么解决的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。配置文件“php.i...
    99+
    2023-06-29
  • php配置没有生效怎么办
    本文操作环境:linux5.9.8系统、PHP7.2版、DELL G3电脑php配置没有生效怎么办?php重启后,配置不生效,一定要重新加载php.ini文件停止PHP:[root@jiang host]# pkill php-fpm查看9...
    99+
    2017-03-05
    php
  • SpringBoot自动配置失效怎么办
    小编给大家分享一下SpringBoot自动配置失效怎么办,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!问题描述下面是一个简单复现的代码片段,在你没有阅读完本文时,如果能做出正确的判断,那恭喜你可以节省阅读本文的时间了。自动...
    99+
    2023-06-25
  • 云服务器配置端口,并没有生效文件权限怎么办
    如果您没有提供足够的信息,请考虑以下几种解决方案: 尝试使用其他服务进行配置:您可以尝试使用不同的云服务器提供商的服务,查询其支持的端口,然后确定您的云服务器的服务提供商和端口号。 手动配置:您可以尝试手动配置云服务器的端口号。这可以通...
    99+
    2023-10-27
    端口 服务器配置 权限
  • response.setHeader设置下载文件名无效怎么解决
    这篇文章主要讲解了“response.setHeader设置下载文件名无效怎么解决”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“response.setHeader设置下载文件名无效怎么解决...
    99+
    2023-06-29
  • win7文件无法创建怎么办
    这篇文章主要为大家展示了“win7文件无法创建怎么办”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“win7文件无法创建怎么办”这篇文章吧。首先,按下Win+R键打开运行,输入gpedit.msc...
    99+
    2023-06-28
  • win10无法拖动文件怎么办
    这篇文章主要介绍了win10无法拖动文件怎么办,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。首先按win+r打开运行窗口,输入gpedit.msc回车打开本地组策略编辑器。在...
    99+
    2023-06-28
  • BootStrap标题设置跨行无效怎么办
    这篇文章主要为大家展示了“BootStrap标题设置跨行无效怎么办”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“BootStrap标题设置跨行无效怎么办”这篇文...
    99+
    2022-10-19
  • span和a设置text-indent无效怎么办
    这篇文章将为大家详细讲解有关span和a设置text-indent无效怎么办,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。 span标签设置装备摆设text-inden...
    99+
    2022-10-19
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作