vue项目实战, webpack 配置流程记录

 vue项目实战记录,地址在这 购物车单界面   

npm install
npm run dev 

跑起来可以看到界面效果

这里简单记录一下webpack的编译流程

入口 package.json 

"scripts": {
    "dev": "node build/dev-server.js", //npm run dev ,执行这里
    "build": "node build/build.js"
  },

build文件下的dev-server.js文件

var config = require('../config')//引入的一个配置文件,运行时和开发时的一个配置文件

var webpack = require('webpack')
var opn = require('opn')
var proxyMiddleware = require('http-proxy-middleware')//http协议代理的一个中间链
var webpackConfig = require('./webpack.dev.conf')// 目前是开发环境,所以是dev.conf

webpack.dev.conf 的导入文件

var config = require('../config')
var webpack = require('webpack')
var merge = require('webpack-merge')
var utils = require('./utils')
var baseWebpackConfig = require('./webpack.base.conf') //导入基础配置文件
var HtmlWebpackPlugin = require('html-webpack-plugin')//webpack提供的一个操作html的插件
//具体看demo注释

webpack.base.conf 文件

var path = require('path')
var config = require('../config')
var utils = require('./utils')
var projectRoot = path.resolve(__dirname, '../')//定义了当前项目的根目录


entry: {
    app: './src/main.js'  //这个就是定义的入口文件了
  },
 output: {
    path: config.build.assetsRoot, //输出的文件路径,对应config文件加下的index.js文件的assetsRoot路径

    publicPath: process.env.NODE_ENV === 'production' ? config.build.assetsPublicPath : config.dev.assetsPublicPath,
    filename: '[name].js' //对应的  entry的一个key ,这里就是app, app.js就是这么得来的

 resolve: {
//模块的相关配置
    extensions: ['', '.js', '.vue', '.json'],//可以自动补全的后缀
    fallback: [path.join(__dirname, '../node_modules')],//当前端模块找不到的时候就从node_modules里面找
    alias: {
//提供的别名
      'vue$': 'vue/dist/vue.common.js',
      'src': path.resolve(__dirname, '../src'),
      'assets': path.resolve(__dirname, '../src/assets'),
      'components': path.resolve(__dirname, '../src/components')
    }

  module: {
//
    loaders: [
      {
//编译时候的处理,比如这里,对所有的js后缀文件babel loader做处理
       test: /.js$/,
        loader: 'babel',  
        include: projectRoot, //检查该目录里面的文件
        exclude: /node_modules/  //排除这个目录里面的文件
      },

{

//这里有个query操作, 超过10KB的文件,对文件名做处理
        test: /.(png|jpe?g|gif|svg)(?.*)?$/,
        loader: 'url',
        query: {
          limit: 10000,
          name: utils.assetsPath('img/[name].[hash:7].[ext]')
        }
      },
还有一个eslint, 做demo的时候我一般都直接去掉了,因为格式的错误提示很蓝瘦,有兴趣的可以Google


vue: {
//css文件配置,具体看utils.cssLoaders函数
    loaders: utils.cssLoaders({ sourceMap: useCssSourceMap }),
    postcss: [
      require('autoprefixer')({
        browsers: ['last 2 versions']
      })
    ]
  }
dev-server.js

module.exports = app.listen(port, function (err) {
//启动server监听端口,这里是8080,在dev里面配置
//通过localhost端口启动网页
  if (err) {
    console.log(err)
    return
  }
  var uri = 'http://localhost:' + port
  console.log('Listening at ' + uri + '
')

  // when env is testing, don't need open it
  if (process.env.NODE_ENV !== 'testing') {
    opn(uri)
  }
})

最近在学vue.js 高仿饿了么的实战项目,有需要视频的告诉我,给链接。

原文地址:https://www.cnblogs.com/L-vincen/p/6728041.html