zoukankan      html  css  js  c++  java
  • 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 高仿饿了么的实战项目,有需要视频的告诉我,给链接。

  • 相关阅读:
    npm install 的时候报错 (Unexpected end of JSON input while parsing near)
    vue 父子组件以及非父子组件如何通信
    webstorm 破解版下载及破解教程------永久使用
    判断数据类型
    洗牌算法
    原生js实现图片懒加载
    React(^16.8) 新增特性Hook
    Blob、ArrayBuffer、File、FileReader和FormData的区别
    React中的Dom操作
    微信小程序填坑总结
  • 原文地址:https://www.cnblogs.com/L-vincen/p/6728041.html
Copyright © 2011-2022 走看看