Развертывание сборки в рабочей среде с использованием express server, который я скомпилировал с помощью webpack -p

#reactjs #deployment #webpack #config #production

#reactjs #развертывание #webpack #конфигурация #производство

Вопрос:

Я хочу развернуть свое приложение в рабочей среде. Я не знаю, что делать после сборки моего пакета с использованием webpack -p. Как обслуживать этот пакет в рабочей среде с использованием express node server.

Мой webpack.config.js файл

 var HtmlWebpackPlugin = require('html-webpack-plugin')
var debug = process.env.NODE_ENV !== "production";
var webpack = require("webpack");

var HTMLWebpackPluginConfig = new HtmlWebpackPlugin({
  template: __dirname   '/app/index.html',
  filename: 'index.html',
  inject: 'body'
});

module.exports = {
  devtool: debug ? "inline-sourcemap" : null,
  entry: [
    './app/index.js'
  ],
  output: {
    path: __dirname   '/dist',
    publicPath: '/',
    filename: "index_bundle.js"
  },
  module: {
    loaders: [
      {test: /.js$/, exclude: /node_modules/, loader: "babel-loader"}
    ]
  },
  resolve: {
    extensions: ['', '.js', '.jsx']
  },
  plugins: debug ? [HTMLWebpackPluginConfig] : [
    HTMLWebpackPluginConfig,
    new webpack.optimize.CommonsChunkPlugin('common.js'),
    new webpack.optimize.DedupePlugin(),
    new webpack.optimize.OccurenceOrderPlugin(),
    new webpack.optimize.UglifyJsPlugin({ mangle: false, sourcemap: false }),
    new webpack.optimize.AggressiveMergingPlugin()
  ],
};
  

Мой файл package.json

 {
  "name": "my-web",
  "version": "1.0.0",
  "description": "Practicing react-website",
  "main": "index.js",
  "scripts": {
    "start": "webpack-dev-server --hot --port 8080 --host 0.0.0.0 --content-base dist/ --history-api-fallback",
    "prod": "NODE_ENV=production webpack -p",
    "postinstall": "npm start"
  },
  "dependencies": {
    "axios": "^0.15.0",
    "express": "^4.14.0",
    "radium": "^0.18.1",
    "react": "^15.3.2",
    "react-dom": "^15.3.2",
    "react-router": "^2.8.1"
  },
  "devDependencies": {
    "babel-core": "^6.17.0",
    "babel-loader": "^6.2.5",
    "babel-preset-react": "^6.16.0",
    "html-webpack-plugin": "^2.22.0",
    "webpack": "^1.13.2",
    "webpack-dev-server": "^1.16.1"
  }
}
  

Примечание: запуск npm выполняется очень хорошо на localhost. И поэтому я использовал webpack -p для создания пакета в папке ./ dist. Отсюда нужны шаги.

Также приветствуется предложение о лучшем способе развертывания.

Ответ №1:

Теперь вам нужно обработать содержимое вашей папки dist с помощью express, вот базовая реализация, которую вы можете использовать в качестве примера:

Создайте файл с именем app.js в вашем . папка (в той же папке, в которой находится ваша папка dist)

app.js

 var path = require('path');
var express = require('express');

var app = express();

app.use(express.static(path.join(__dirname, '/dist')));

app.get('/*', function(req, res){
  res.sendfile("index.html", {root: path.join(__dirname, '/dist')});
});

app.listen(80, function() {
  console.log("App is running at localhost: 80")
});
  

Затем запустите node app.js , если вы получаете ошибку EACCES, запустите sudo node app.js вместо этого. Это запускает ваши производственные файлы локально по адресуhttp://localhost .

Если вы хотите развернуть это где-то еще (например, heroku https://devcenter.heroku.com/articles/getting-started-with-nodejs#introduction ) вам нужно будет проверить их инструкции.

Комментарии:

1. Отредактировал ответ, не уверен, смогу ли я вам больше помочь