You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
constwebpack=require('webpack')constHtmlWebpackPlugin=require('html-webpack-plugin')constCleanWebpackPlugin=require('clean-webpack-plugin')constBundleAnalyzerPlugin=require('webpack-bundle-analyzer').BundleAnalyzerPluginconstexec=require('child_process').execSyncconstwebpackConfigBase=require('./webpack.config.base.js')constpkg=require('./package.json')// 网站版本号设置letappVersion=''try{appVersion=exec('git rev-parse --short HEAD').toString().replace(/\n/,'')}catch(e){console.warn('Getting revision FAILED. Maybe this is not a git project.')}constconfig=Object.assign(webpackConfigBase.config,{// You should configure your server to disallow access to the Source Map file for normal users!devtool: 'source-map',entry: {app: webpackConfigBase.resolve('app/index.js'),// 将第三方依赖(node_modules)的库打包,从而充分利用浏览器缓存vendor: Object.keys(pkg.dependencies)},output: {path: webpackConfigBase.resolve('dist'),// publicPath: 'https://cdn.self.com'publicPath: webpackConfigBase.resolve('dist/'),filename: 'static/js/[name].[chunkhash:8].js'},plugins: [// Scope hostingnewwebpack.optimize.ModuleConcatenationPlugin(),// 删除build文件夹newCleanWebpackPlugin(webpackConfigBase.resolve('dist')),// 抽离出csswebpackConfigBase.extractAppCSS,webpackConfigBase.extractBaseCSS,// 提取公共代码vendornewwebpack.optimize.CommonsChunkPlugin({name: 'vendor',filename: 'static/js/[name].[chunkhash:8].js'}),// html 模板插件newHtmlWebpackPlugin({
appVersion,favicon: webpackConfigBase.favicon,filename: 'index.html',template: webpackConfigBase.resolve('app/index.html'),minify: {removeComments: true,collapseWhitespace: false}}),// 定义全局常量newwebpack.DefinePlugin({'process.env': {NODE_ENV: '"production"'}}),// 可视化分析newBundleAnalyzerPlugin(),// 加署名newwebpack.BannerPlugin('Copyright by 子咻 https://github.com/CodeLittlePrince/blog'),]})module.exports=config
前言
弄完了前后端分离,我们自然想打包发布项目了。
不多说,就让我们来看看吧。
开发
直接上代码:
代码几乎全都有注释,有不懂的可以在评论去留言。
思考
虽然代码写好了,但是我们不禁发出一声“卧槽”,好多和webpack.config.js一样的代码啊,要是改了一样的代码部分,我还得同时改两份,而且,这么多的冗余代码对于一个优秀的程序员来讲,是不可容忍的。
那我们改怎么呢?
重构webpack的配置代码
一、创建一个基础的webpack配置文件
我们就叫
webapck.config.base.js
吧:二、重构webpack开发环境配置
三、重构webpack开发环境配置
代码瞬间变得清晰、精简、高大上有没有?!(^-^)V
看一下打包处理后代码情况(兼容IE10及以上):
总结
这一篇我们编写了开发环境用的webpack配置文件,然后发现代码的冗余从而重构了开发和发布环境的webpack配置。
之后,我们还需要能够自动测试我们写的业务代码,避免人工手动各种戳页面(虽然大部分公司都是这么干的,即使是大公司会腾出时间和人手写测试用例的部门也不多),不过架构还是要做的。
下篇我们会来完成测试的流程 - 从零开始做Vue前端架构(6)
项目完整代码
Vue前端架构-by 子咻
The text was updated successfully, but these errors were encountered: