私はReactとWebpackとこれらすべてのものに慣れています。 Webpackを使ってReactアプリケーションを作成し、webpack-dev-serverを使って自分のアプリケーションを作成してデバッグしました。私webpack.config.js中のSOどのようにwebpackと反応するアプリを準備する
私はこのコードを持っているファイル:
var debug = process.env.NODE_ENV !== "production";
var webpack = require('webpack');
var path = require('path');
const ExtractTextPlugin = require("extract-text-webpack-plugin");
module.exports = {
context: path.join(__dirname, "src"),
devtool: debug ? "inline-sourcemap" : false,
entry: "./js/client.js",
module: {
loaders: [
{
test: /\.js?$/,
exclude: /(node_modules|bower_components)/,
loader: 'babel-loader',
query: {
presets: ['react', 'es2015', 'stage-0'],
plugins: ['react-html-attrs', 'transform-decorators-legacy', 'transform-class-properties'],
}
},
{
test: /\.scss$/,
use: debug ? [{
loader: "style-loader" // creates style nodes from JS strings
}, {
loader: "css-loader" // translates CSS into CommonJS
}, {
loader: "sass-loader" // compiles Sass to CSS
}] : ExtractTextPlugin.extract({ fallback: "style-loader", use: "css-loader" })
}
]
},
output: {
path: __dirname + "/src/",
filename: "client.min.js"
},
plugins: debug ? [] : [
new ExtractTextPlugin('style.min.css'),
new webpack.optimize.DedupePlugin(),
new webpack.optimize.OccurrenceOrderPlugin(),
new webpack.optimize.UglifyJsPlugin({ mangle: false, sourcemap: false }),
],
externals: {
"jquery": "jQuery",
"react": "React",
"react-dom": "ReactDOM",
"animejs": "anime"
}
};
私はWebPACKの-devのサーバー--contentベースSRC --inline --hotを使用する場合、私は私のアプリを見ますlocalhost:8080で作業していますが、今はそのアプリケーションをプロダクション用に準備したいと思っています。そこで私は端末でこれらのコードを実行しました:
$: NODE_ENV=production
$: webpack
何も変わりません!だから最初の質問:何が間違ってNODE_ENV=production
とは何ですか?ウェブパックの最初の行をvar debug = process.env.NODE_ENV === "production"; //false
に変更すると動作します。
その他の問題があります。 私はSassを使用しています。debug === false
と私のブラウザでindex.htmlファイルを開くと、私のスタイルはコンパイルされません!
{
test: /\.scss$/,
use: debug ? [{
loader: "style-loader" // creates style nodes from JS strings
}, {
loader: "css-loader" // translates CSS into CommonJS
}, {
loader: "sass-loader" // compiles Sass to CSS
}] : ExtractTextPlugin.extract({ fallback: "style-loader", use: "css-loader" })
}
そして最後の問題は、絶対パスである:ちょうど私のSASSコードのすべての問題は、コードのこの部分であるべきstyle.min.css
ファイルにコピーされます!私はWebPACKの-devのサーバーを使用しますが、私はWebPACKのを使用する場合、それは私のLinuxのルートから、それを開こうとして、画像が見つからない場合
<img src="/images/avatar.jpg">
それは動作します:私は私のアプリでこのコードを持っています。
したがって、これらは私の質問です:NODE_ENV =生産が動作しない理由を
- ?
- 私はsassをコンパイルし、CSSをstyle.min.cssに入れるべきですか?
- アプリで絶対パスを使用するにはどうすればよいですか?
事前のおかげで
のようにSRCに入れますwebpack -pを試してください – webdeb
ありがとうございます。このコードを手助けした: 'NODE_ENV = 'production' webpack -p'これは最初の問題を解決した。 –
あなたはNODE_ENV = productionを必要としません、 '-p'はそれを処理しています – webdeb