2017-03-03 12 views
0

これは私の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" 
    }] 
    } 
} 

答えて

0

使用path

var path = require('path'); 

.... 

output: { 
    path: path.join(__dirname, './dist/assets'), 
+0

ありがとうございました。これはdevServerでも動作しますが、実際にファイルを書き込むにはwebpackを個別に実行する必要があります。どのようにnpmを起動してwebpackを実行し、devServerにもサービスを提供するように設定するのですか? –

+0

'npm start'の' package.json'にスクリプトを定義すると 'wepack'が実行され、' package.json'に次の行が含まれます: '" scripts ":{ " start ":" webpack- dev-server --color --inline "}' –

+0

Hmmm ... npm startとは別にしない限り、まだwebpackを実行しません(そしてファイルを書きます)。私はこれを私のpackage.json {... "scripts":{ "start": "webpack-dev-server --color --inline" }に入れました。 –