Skip to content

vue项目分环境打包

vue版本: 2.5

开发中,一般的项目都会区分环境,例如开发环境,测试环境,生产环境。以此保证产品能够更好更优雅的开发、测试、发布,也方便工程师能够更快更准的定位、解决问题。同时,也方便前端开发根据不同环境配置对应的接口地址

这里我分了两种环境来打包项目 (测试环境,生产环境)

  • vue-cli创建的项目中区分环境比较方便,可以在config目录下新建不同的文件来区分环境

vue分环境打包

  • 测试环境
js
'use strict'
module.exports = {
  NODE_ENV: '"testing"',
  API_ROOT: '"api.test.com"',
  ENV_CONFIG:'"test"'
}
  • 生产环境(线上)
js
'use strict'
module.exports = {
  NODE_ENV: '"production"',
  API_ROOT: '"api.production.com"',
  ENV_CONFIG:'"prod"'
}

接下来需要配置webpack

  • config/index.js

引入环境文件

引入环境文件

  • build/webpack.prod.conf.js
js
const env = config.build[`${process.env.env_config}Env`]

// 区分不同环境
  • build/build.js
js
const spinner = ora(`building for ${process.env.NODE_ENV} of ${process.env.env_config} mode...`)
spinner.start()

// 终端打印区分环境
  • build/webpack.base.conf.js

配置不同环境的静态资源引用路径

build-output

build

  • 打包命令

需要用到 cross-env 插件来动态的设置环境变量

bash
npm i cross-env

打包命令

  • 使用
bash
# 测试环境
npm run build:test 

# 生产环境
npm run build:prod

部署

小型项目如何自动化部署?

在开发一些小型项目时,大多数情况下没有系统的开发、集成、部署方案,往往需要将项目打包后手动上传至服务器,反反复复,难免觉得繁琐,这里推荐一种自动化部署的解决方案。

fjpublish: 部署工具这里我使用的是一个第三方插件,可配置程度高,能满足大部分需求

下载(推荐全局安装)

bash
npm install fjpublish -g

配置文件

根目录下新建fjpublish.config.js文件

点击查看代码
js
module.exports = {
  modules: [
    {
      name: '测试环境',
      env: 'testing',
      ssh: {
        host: 'xxxx',
        port: 10022,
        username: 'root', 
        password: 'xxxx'
      },
      buildCommand: 'build:test',
      localPath: 'dist',
      remotePath: '/usr/share/nginx/html/'
    },
    {
      name: '生产环境',
      env: 'production',
      ssh: {
        host: 'xxxx',
        port: 10022,
        username: 'root', 
        password: 'xxxxx'
      },
      buildCommand: 'build:prod',
      localPath: 'dist',
      remotePath: '/usr/share/nginx/html/'
    }
  ],
  nohistory: true,
  nobackup: true,
  shellTrashPath: '/usr/share/nginx/fjpublishTrash'
}

运行

package.json文件中

"scripts": {
  "deploy": "fjpublish env -s"
}
bash
npm run deploy

示例

部署

Updated at: