これは私のwebpack.configファイルです。 webpackを実行すると、bundle.jsは正しくproject/dist/assets/bundle.jsに書き込みます。Webpack出力パスの問題
Error: output.path needs to be an absolute path or /
:しかし
、私はNPMファイルを提供するために開始実行、私はエラーを取得します。
私がパスを絶対にすると、"/dist/assets"
またはpath: __dirname + "/dist/assets"
のファイルが正常に処理され、bundle.jsが生成されますが、実際にはproject/dist/assetsフォルダには書き込まれません。
ページが正常に表示され、ソースを表示すると<script src="/assets/bundle.js"></script>
が表示されますが、ローカルホスト(publicPath)にのみ存在します。
どこが間違っていますか? npmの目標は、バンドルをプロジェクトフォルダに書き出し、devServerでそれを提供することです。このため
var webpack = require("webpack");
module.exports = {
entry: "./src/index.js",
output: {
path: "./dist/assets",
filename: "bundle.js",
publicPath: "/assets"
},
devServer: {
inline: true,
contentBase: "./dist",
port: 3000
},
module: {
loaders: [{
test: /\.js$/,
exclude: /(node_modules)/,
loader: ["babel-loader", "babel-loader?presets[]=latest,presets[]=stage-0,presets[]=react"]
}, {
test: /\.json$/,
exclude: /(node_modules)/,
loader: "json-loader"
}, {
test: /\.css$/,
loader: "style-loader!css-loader!autoprefixer-loader"
}, {
test: /\.scss$/,
loader: "style-loader!css-loader!autoprefixer-loader!sass-loader"
}]
}
}
ありがとうございました。これはdevServerでも動作しますが、実際にファイルを書き込むにはwebpackを個別に実行する必要があります。どのようにnpmを起動してwebpackを実行し、devServerにもサービスを提供するように設定するのですか? –
'npm start'の' package.json'にスクリプトを定義すると 'wepack'が実行され、' package.json'に次の行が含まれます: '" scripts ":{ " start ":" webpack- dev-server --color --inline "}' –
Hmmm ... npm startとは別にしない限り、まだwebpackを実行しません(そしてファイルを書きます)。私はこれを私のpackage.json {... "scripts":{ "start": "webpack-dev-server --color --inline" }に入れました。 –