欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

webpack 1.x升级过程中的踩坑总结大全

程序员文章站 2022-05-14 19:17:44
前言 大家应该都知道,webpack 是一个前端资源加载/打包工具。它将根据模块的依赖关系进行静态分析,然后将这些模块按照指定的规则生成对应的静态资源。因为最近在对博客做...

前言

大家应该都知道,webpack 是一个前端资源加载/打包工具。它将根据模块的依赖关系进行静态分析,然后将这些模块按照指定的规则生成对应的静态资源。因为最近在对博客做ssr,无奈vue ssr demo或例子都是基于webpack2的。博主在webpack1.x上折腾了许久,vue-ssr-server-bundle.json文件生成仍然还是遥遥无期。最后还是乖乖地开始了webpack升级之旅。

本文主要记录升级过程中遇到的一些坑和解决办法,可能有些遗漏了,能记多少记多少吧。话不多说了,来一起看看详细的介绍吧。

webpack 1.x升级过程中的踩坑总结大全

错误:error: chunk.entry was removed. use hasruntime()

解决办法:升级extract-text-webpack-plugin ("extract-text-webpack-plugin": "^2.1.0",)

错误:error: breaking change: extract now only takes a single argument.

// 错误提示

error: breaking change: extract now only takes a single argument. either an options object *or* the loader(s).
example: if your old code looked like this:
 extracttextplugin.extract('style-loader', 'css-loader')

you would change it to:
 extracttextplugin.extract({ fallback: 'style-loader', use: 'css-loader' })

原因是webpack2对loader的配置做了一些调整,修改 extracttextplugin配置即可:

{
 test: /\.less$/,
 use: extracttextplugin.extract({
  fallback: 'style-loader',
  use: ['css-loader', 'less-loader']
 })
},

htmlwebpackplugin生成的html,没有引入css, app.js

修改配置,chunks属性使用files包裹

{
 filename: pagename + '.html',
 template: __dirname + '/src/' + pagename + '.html',
 chunks: pageconf.chunks,
 inject: true
};
{
 filename: pagename + '.html',
 template: __dirname + '/src/' + pagename + '.html',
 files: {
  chunks: pageconf.chunks,
 },
 inject: true
};

eslint不能识别es6语法

 ✘ http://eslint.org/docs/rules/ parsing error: the keyword 'import' is reserved
 src\entry.client.js:7:1
 import { createapp } from './app'
 ^

解决办法:修改eslint配置,增加

"parser": "babel-eslint",

错误: module build failed: browserslisterror: unknown version 57 of and_chr

npm 包过期,删除node_modules,从新安装依赖即可

webpack dist打包后,不生成公共css文件

vee-loader配置不对,加上配置 extractcss: true

{
 test: /\.vue$/,
 loader: 'vue-loader',
 options: {
  extractcss: isprod,
  preservewhitespace: false,
  postcss: [
  require('autoprefixer')({
   browsers: ['last 3 versions']
  })
  ]
 }
},

小结

升级过程总体上还算顺利,vue-ssr-server-bundle.json也生成了,不过这仅仅是ssr的开始,一大堆问题等着解决。 如果不熟悉webpack2可以先花点时间看下官网介绍,英文不好的可以看翻译版。 整个升级过程总得来说,就是很多loader得升级,另一个要注意的就是loader的配置了,其它似乎没什么特别的地方。

总结

好了,以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对的支持。