使用Webpack将React应用程序投入生产

时间:2018-01-18 16:51:42

标签: javascript reactjs web webpack yarnpkg

在这里反应新手。我刚刚完成了我的第一个React应用程序,但遇到了将其投入生产的问题

目前,我正在尝试运行

NODE_ENV=production webpack -p

package.json 文件中添加脚本。

所有内容都没有问题,但脚本似乎没有输出正确的生产 index.html 文件。例如,所有JS和CSS文件都有一个问号,并在其末尾附加了随机字符,如此

href="/css/app.css?287deee1465dba65696e"

此外,生产index.html文件似乎只有在我的开发环境中的 /src/index.html 中编写的内容,但我希望它是 / src中的内容/App.js 我写的代码的内容。

我必须在某个地方找些东西但是因为我对Webpack和React都很新,所以我不知道从哪里开始看。下面是我的index.js,index.html和我的webpack.config.js的一部分,涉及将代码放入生产中。 的 index.js

//const css = require('./app.scss');
const css = require('./style/style.scss');

import React from 'react';
import ReactDOM from 'react-dom';
import anime from 'animejs';
import {App} from './App.js';

ReactDOM.render(
  <App />,
  document.getElementById('root')

);

的index.html(SRC)

<!DOCTYPE html>
<html>
  <head>
     <meta charset="UTF-8">
     <title><%= htmlWebpackPlugin.options.title %></title>
  </head>
  <body >
     <div id="root">
          <h1>Webpack</h1>
     </div>
  </body>
</html>

webpack.config.js

var isProd = process.env.NODE_ENV ===  'production'; //true or false

var cssDev = ['style-loader', 'css-loader', 'sass-loader'];

var cssProd =   ExtractTextPlugin.extract({

fallback: 'style-loader',

            use: ['css-loader','sass-loader'],
            publicPath: '/dist'
        })
var cssConfig = isProd ? cssProd : cssDev;

module.exports =  {

entry:{
    app: './src/index.js',
    slideshow: './src/js/slideshow.js',
    shapallax: './src/js/shapallax.js',
    yona: './src/js/yona.js',
},
output: {
    path: path.resolve(__dirname, "dist"),
    // path: __dirname + '/dist',
    filename: '[name].bundle.js'
},

我确信有一些我错过的细节会对解决这个问题有所帮助,所以请让我知道正确的事情要求和询问。

1 个答案:

答案 0 :(得分:0)

我设法找出了相当简单的问题。在我的 webpack.config.js 中,我必须更改 ExtractTextPlugin 设置中的文件名。删除我在路径开头的正斜杠后,我能够在 / dist 文件夹中输出正确的所有内容。最终的工作设置如下所示。

 new ExtractTextPlugin({
        filename: 'css/[name].css',
        disable: !isProd,
        allChunks:true
    }),
相关问题