Как запустить производственный участок после сборки vue cli

Я использую VueCLI 2 и создаю как производство. Конструкция build.js построена и скомпилирована в 200 КБ. Когда я повторно запускаю сервер в качестве разработки, он загружает 3 МБ. Я уверен, что файл build.js внутри dist находится в 200 КБ. Я попытался открыть index.html, но он не работает и перенаправляется в корневой каталог на веб-сайте.

Package.json

"scripts": {
  "dev": "cross-env NODE_ENV=development webpack-dev-server --open --hot",
  "build": "cross-env NODE_ENV=production webpack --progress --hide-modules"
},

Webpack

module.exports = { ...
module:{
 ...
 plugins: [
  new webpack.ProvidePlugin({
    $: 'jquery',
    jquery: 'jquery',
    'window.jQuery': 'jquery',
    jQuery: 'jquery'
  })
 ],
 devtool: '#eval-source-map'
},
...
}

if (process.env.NODE_ENV === 'production') {
  module.exports.devtool = '#source-map'
  // http://vue-loader.vuejs.org/en/workflow/production.html
  module.exports.plugins = (module.exports.plugins || []).concat([
   new webpack.DefinePlugin({
    'process.env': {
     NODE_ENV: '"production"'
   }
  }),
  new webpack.optimize.UglifyJsPlugin({
    sourceMap: true,
    compress: {
     warnings: true
    }
  }),
  new webpack.LoaderOptionsPlugin({
    minimize: true
  }),
  new webpack.optimize.CommonsChunkPlugin({
    name: 'vendor',
    minChunks: function (module) {
      return module.context && module.context.indexOf('node_modules') !== -1;
    }
  })
 ])
}

HTML

<body>
  <script src="/dist/vendor.js"></script>
  <script src="/dist/main.js"></script>
</body>

Команда

npm run build

npm запустить dev

Ответ 1

npm run build создает каталог dist с производственной сборкой вашего приложения.

Чтобы обслуживать index.html в браузере, вам нужен HTTP-сервер.

Например, служить:

npm install -g serve
serve -s dist

Порт по умолчанию - 5000, но его можно настроить с помощью флагов -l или --listen:

serve -s build -l 4000

Docs:

Ответ 2

Очень легко с express, и очень расширяемый/настраиваемый.

устанавливать

npm install -D express

компоновать

server.js

// optional: allow environment to specify port
const port = process.env.PORT || 8080

// wire up the module
const express = require('express') 
// create server instance
const app = express() 
// bind the request to an absolute path or relative to the CWD
app.use(express.static('dist'))
// start the server
app.listen(port, () => console.log('Listening on port ${port}'))

казнить

node server.js

Ответ 3

Сборка должна быть развернута на сервере, поэтому я не думаю, что в vue-cli есть какой-либо встроенный способ запустить сборку локально.

Чтобы запустить сборку локально, нам нужно настроить сервер отдельно и запустить сборку на сервере следующим образом:

1) Установите облегченный сервер с помощью следующей команды

$ npm install -g lite-server

2) Добавьте ниже скрипты в package.json

"lite": "lite-server –port 10001",    
"start": "npm run lite"

3) В корневом каталоге создайте файл bs-config.js и добавьте приведенный ниже скрипт

module.exports = {
  port: 3000,
  server: {
    baseDir: './dist'
  }
}

4) И наконец, запустите его с помощью команды ниже

$ npm run start