Vue__npm run build npm run dev

npm run build npm run dev

一、以前一直错的做法

   以前,git完项目之后就,执行1.npm install 2.npm run build 3.npm run dev.今天main.js中有一句

window.HOST = HOST,查看在webpack.base.conf.js中找到源码
// define the different HOST between development and production environment
var DEV_HOST = JSON.stringify('http://10.9.240.9:8088/api/')
var PUB_HOST = JSON.stringify('/api')

module.exports = {
  entry: {
    app: './src/main.js'
  },
  output: {
    path: config.build.assetsRoot,
    publicPath: process.env.NODE_ENV === 'production' ? config.build.assetsPublicPath : config.dev.assetsPublicPath,
    filename: '[name].js'
  },
  eslint: {
    configFile: './.eslintrc.json'
  },
  plugins: [
    new webpack.DefinePlugin({
      HOST: process.env.NODE_ENV === 'production' ? PUB_HOST : DEV_HOST
    })
  ]

在config-->index.js中定义的build和dev

// see http://vuejs-templates.github.io/webpack for documentation.
var path = require('path')

module.exports = {
  build: { // production 环境
    env: require('./prod.env'), // 使用 config/prod.env.js 中定义的编译环境
    index: path.resolve(__dirname, '../manage/index.html'), // 编译输入的 index.html 文件
    assetsRoot: path.resolve(__dirname, '../manage/'),// 编译输出的静态资源路径
    assetsSubDirectory: 'static', // 编译输出的二级目录

    assetsPublicPath: './', // 编译发布的根目录,可配置为资源服务器域名或 CDN 域名
    productionSourceMap: true, //是否开启 cssSourceMap

    productionGzip: false, // 是否开启 gzip
    productionGzipExtensions: ['js', 'css']  // 需要使用 gzip 压缩的文件扩展名
  },
  dev: {
    env: require('./dev.env'), // 使用 config/dev.env.js 中定义的编译环境
    port: 8088, // 运行测试页面的端口
    assetsSubDirectory: 'static', // 编译输出的二级目录
    assetsPublicPath: '/', // 编译发布的根目录,可配置为资源服务器域名或 CDN 域名
    proxyTable: {  // 需要 proxyTable 代理的接口(可跨域)
      '/api': {
        // target: 'http://10.9.65.114:8005',

        // target: 'http://10.9.240.3:8020',
        // DAT
        target: 'http://10.9.240.9:8020',
        // Localhost
        // target: 'http://10.9.240.14:8020',
        pathRewrite: {
          '^/api': '/'
        }
      }
    },

    cssSourceMap: false
  }
}

在package.json中定义npm run build 和  dev 对应的指令

{
  "name": "cloud-vue",
  "version": "1.0.0",
  "description": "cloud-vue made by vue2.0",
  "scripts": {
    "dev": "node build/dev-server.js",
    "build": "node build/build.js"
  },

 

那么接着看这俩文件

// https://github.com/shelljs/shelljs
require('./check-versions')()
require('shelljs/global')
env.NODE_ENV = 'production'

var path = require('path')
var config = require('../config')
var ora = require('ora')
var webpack = require('webpack')
var webpackConfig = require('./webpack.prod.conf')
var spinner = ora('building for production...')
spinner.start()
var assetsPath = path.join(config.build.assetsRoot, config.build.assetsSubDirectory)
rm('-rf', assetsPath)
mkdir('-p', assetsPath)
cp('-R', 'static/*', assetsPath)
webpack(webpackConfig, function (err, stats) {
  spinner.stop()
  if (err) throw err
  process.stdout.write(stats.toString({
    colors: true,
    modules: false,
    children: false,
    chunks: false,
    chunkModules: false
  }) + '\n')
})

在build-->dev-server.js中

require('./check-versions')()
var config = require('../config')
if (!process.env.NODE_ENV) process.env.NODE_ENV = config.dev.env
var path = require('path')
var express = require('express')
var webpack = require('webpack')
var opn = require('opn')
var proxyMiddleware = require('http-proxy-middleware')
var webpackConfig = require('./webpack.dev.conf')

  

那么就解释了 Host 的值 dev 时候走的第15行,build的时候走的第16行,本地执行npm run  dev就执行了,不必要执行npm run build 这个是为生成namage对应的文件包,用于上传服务器的

 

  

 

  

 

 

atzhang  

posted @ 2020-07-28 14:41  张艳涛&java  阅读(1019)  评论(0编辑  收藏  举报