如何配置生产构建和开发构建 vue-cli
Posted
技术标签:
【中文标题】如何配置生产构建和开发构建 vue-cli【英文标题】:How to configure Production build and Development Build vue-cli 【发布时间】:2019-11-03 09:06:24 【问题描述】:我想设置一个用于生产构建的 npm 脚本和一个用于开发构建的脚本。比如用于生产的 npm run build 和用于开发的 npm run buildDev。 我在每个 env 文件中都有一些配置,例如:
ROOT_API: '"url for the production"' 以及开发环境中的其他内容。
构建将被添加到 dist 文件夹。 我希望将 Production Build 添加到 dist 文件夹,并将 Development Build 添加到 distDev 文件夹。
我尝试复制 build.js 文件但没有成功。
配置/index.js:
'use strict'
// see http://vuejs-templates.github.io/webpack for documentation.
const path = require('path')
module.exports =
build:
env: require('./prod.env'),
index: path.resolve(__dirname, '../dist/index.html'),
assetsRoot: path.resolve(__dirname, '../dist'),
assetsSubDirectory: 'static',
assetsPublicPath: '/',
productionSourceMap: true,
// Gzip off by default as many popular static hosts such as
// Surge or Netlify already gzip all static assets for you.
// Before setting to `true`, make sure to:
// npm install --save-dev compression-webpack-plugin
productionGzip: false,
productionGzipExtensions: ['js', 'css'],
// Run the build command with an extra argument to
// View the bundle analyzer report after build finishes:
// `npm run build --report`
// Set to `true` or `false` to always turn it on or off
bundleAnalyzerReport: process.env.npm_config_report
,
dev:
env: require('./dev.env'),
port: 8080,
autoOpenBrowser: true,
assetsSubDirectory: 'static',
assetsPublicPath: '/',
proxyTable: ,
// CSS Sourcemaps off by default because relative paths are
"buggy"
// with this option, according to the CSS-Loader README
// (https://github.com/webpack/css-loader#sourcemaps)
// In our experience, they generally work as expected,
// just be aware of this issue when enabling this option.
cssSourceMap: false
配置/prod.env.js
module.exports =
NODE_ENV: '"production"',
ROOT_API: '"url for production"'
配置/dev.env.js
'use strict'
const merge = require('webpack-merge')
const prodEnv = require('./prod.env')
module.exports = merge(prodEnv,
NODE_ENV: '"development"',
ROOT_API: '"url for development"'
)
构建/build.js
'use strict'
require('./check-versions')()
process.env.NODE_ENV = 'production'
const ora = require('ora')
const rm = require('rimraf')
const path = require('path')
const chalk = require('chalk')
const webpack = require('webpack')
const config = require('../config')
const webpackConfig = require('./webpack.prod.conf')
const spinner = ora('building for production...')
spinner.start()
rm(path.join(config.build.assetsRoot,
config.build.assetsSubDirectory), err =>
if (err) throw err
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\n')
console.log(chalk.cyan(' Build complete.\n'))
console.log(chalk.yellow(
' Tip: built files are meant to be served over an HTTP
server.\n' +
' Opening index.html over file:// won\'t work.\n'
))
)
)
有什么建议吗?
【问题讨论】:
【参考方案1】:您没有尝试使用vue.config.js
文件来配置Vue 构建行为吗?
您可以根据process.env.NODE_ENV
vue.config.js
指定outputDir
。
所有特定于环境的参数都将在.env.development
和.env.production
文件中相应地设置。
当然你可以通过vue.config.js
修改Webpack配置,如果需要,examples here。
输出目录参数更改示例is here.
最后,你的配置文件将只依赖于环境变量和一些逻辑,例如:
module.exports =
NODE_ENV: process.env.NODE_ENV,
ROOT_API: process.env.VUE_APP_ROOT_API_URL,
ANY_PARAM: process.env.VUE_APP_ANY_DOT_ENV_PARAM,
但请记住,如果您在模板中使用自定义 .env 参数,则应以 VUE_APP_
前缀开头。
【讨论】:
【参考方案2】:在您的 package.json 文件中添加 --mode 开发条目,如下所示:
【讨论】:
或者,如果您不想在 package.json 中提及,也可以使用命令“Yarn build --mode development”或“npm build --mode development”来构建。跨度>以上是关于如何配置生产构建和开发构建 vue-cli的主要内容,如果未能解决你的问题,请参考以下文章
vue-cli 构建的项目 webpack 如何配置不 build 出 .map 文件?