Как настроить производственную сборку и разработку сборки vue-cli - PullRequest
0 голосов
/ 20 июня 2019

Я хочу установить скрипт npm для производственной сборки и один для разработки.как npm запустить сборку для производства и npm запустить buildDev для разработки.У меня есть несколько конфигураций в каждом файле env, например:

ROOT_API: «URL для производства» и что-то еще в env разработки.

Сборка будет добавлена ​​в папку dist.Я хочу, чтобы Production Build был добавлен в папку dist, а Development Build - в папку distDev.

Я попытался сделать копию файла build.js, но безуспешно.

config / 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
 }
}

config / prod.env.js

module.exports = {
  NODE_ENV: '"production"',
  ROOT_API: '"url for production"'
}

config / 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 / 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 Ответ

0 голосов
/ 20 июня 2019

Не пытались ли вы использовать файл vue.config.js для настройки поведения сборки Vue?Вы можете указать outputDir в соответствии с process.env.NODE_ENV в vue.config.js.

Все параметры среды будут установлены в файлах .env.development и .env.production соответственно.

Конечновы можете изменить конфигурацию Webpack с помощью vue.config.js, если вам нужно, примеров здесь .

Пример изменения параметров выходного каталога здесь .

НаВ конце концов, ваш файл конфигурации будет зависеть только от переменных среды и, возможно, от некоторой логики, например:

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_, если вы используете их в шаблонах.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...