vue-cli中的webpack配置详解
版本号
目录结构 webpack配置主要对build目录下的webpack配置做详细分析 webpack.base.conf.js 入口文件entry 输出文件output config的配置在config/index.js文件中 文件解析resolve 主要设置模块如何被解析。 模块解析module 如何处理项目不同类型的模块。 注: 关于query 仅由于兼容性原因而存在。请使用 options 代替。 webpack.dev.conf.js开发环境下的webpack配置,通过merge方法合并webpack.base.conf.js基础配置 模块配置 在util.styleLoaders中的配置如下 上面的代码中调用了exports.cssLoaders(options),用来返回针对各类型的样式文件的处理方式,具体实现如下 var cssLoader = {
loader: 'css-loader',options: { //options是loader的选项配置 minimize: process.env.NODE_ENV === 'production',//生成环境下压缩文件 sourceMap: options.sourceMap //根据参数是否生成sourceMap文件 } } function generateLoaders (loader,loaderOptions) { //生成loader var loaders = [cssLoader] // 默认是css-loader if (loader) { // 如果参数loader存在 loaders.push({ loader: loader + '-loader',options: Object.assign({},loaderOptions,{ //将loaderOptions和sourceMap组成一个对象 sourceMap: options.sourceMap }) }) } if (options.extract) { // 如果传入的options存在extract且为true return ExtractTextPlugin.extract({ //ExtractTextPlugin分离js中引入的css文件 use: loaders,//处理的loader fallback: 'vue-style-loader' //没有被提取分离时使用的loader }) } else { return ['vue-style-loader'].concat(loaders) } } return { //返回css类型对应的loader组成的对象 generateLoaders()来生成loader css: generateLoaders(),postcss: generateLoaders(),less: generateLoaders('less'),sass: generateLoaders('sass',{ indentedSyntax: true }),scss: generateLoaders('sass'),stylus: generateLoaders('stylus'),styl: generateLoaders('stylus') } } 插件配置 webpack.prod.conf.js生产环境下的webpack配置,通过merge方法合并webpack.base.conf.js基础配置 module的处理,主要是针对css的处理 同样的此处调用了utils.styleLoaders 输出文件output 插件plugins 额外配置 //引入压缩文件的组件,该插件会对生成的文件进行压缩,生成一个.gz文件
var CompressionWebpackPlugin = require('compression-webpack-plugin') webpackConfig.plugins.push( npm run dev有了上面的配置之后,下面看看运行命令 在package.json文件中定义了dev运行的脚本 当运行npm run dev命令时,实际上会运行dev-server.js文件 该文件以express作为后端框架 var port = process.env.PORT || config.dev.port //端口号
var autoOpenBrowser = !!config.dev.autoOpenBrowser //是否自动打开浏览器 var proxyTable = config.dev.proxyTable //http的代理url var app = express() //启动express //webpack-dev-middleware的作用 //webpack-hot-middleware的作用就是实现浏览器的无刷新更新 //将代理请求的配置应用到express服务上 //使用connect-history-api-fallback匹配资源 // 应用devMiddleware中间件 // 配置express静态资源目录 var uri = 'http://localhost:' + port //编译成功后打印uri npm run build由于package.json中的配置,运行此命令后会执行build.js文件 // 在终端显示ora库的loading效果
var spinner = ora('building for production...') spinner.start() // 删除已编译文件 // 在编译完成的回调函数中,在终端输出编译的文件 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程之家。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |