在这里反应新手。我刚刚完成了我的第一个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'
},
我确信有一些我错过的细节会对解决这个问题有所帮助,所以请让我知道正确的事情要求和询问。
答案 0 :(得分:0)
我设法找出了相当简单的问题。在我的 webpack.config.js 中,我必须更改 ExtractTextPlugin 设置中的文件名。删除我在路径开头的正斜杠后,我能够在 / dist 文件夹中输出正确的所有内容。最终的工作设置如下所示。
new ExtractTextPlugin({
filename: 'css/[name].css',
disable: !isProd,
allChunks:true
}),