最近在对博客做SSR,无奈vue ssr demo或例子都是基于webpack2的。博主在webpack1.x上折腾了许久,vue-ssr-server-bundle.json文件生成仍然还是遥遥无期。最后还是乖乖地开始了webpack升级之旅。本文主要记录升级过程中遇到的一些坑和解决办法,可能有些遗漏了,能记多少记多少吧。
解决办法:升级extract-text-webpack-plugin ("extract-text-webpack-plugin": "^2.1.0",)
// 错误提示
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']
})
},
修改配置,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
};
✘ 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",
npm 包过期,删除node_modules,从新安装依赖即可
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的配置了,其它似乎没什么特别的地方。
发表评论: