2017-03-03 139 views
0

这是我的webpack.config文件。当我运行webpack时,bundle.js会正确写入project/dist/assets/bundle.js。Webpack输出路径问题

然而,当我运行NPM开始就可以提供这些文件,我得到一个错误:

Error: output.path needs to be an absolute path or /

所以......如果我做的绝对路径:"/dist/assets"path: __dirname + "/dist/assets"那么它提供了文件罚款,并发出bundle.js,但它实际上并没有写我的项目/距离/资产的文件夹。

页面看起来很好,当我查看源代码时,我看到<script src="/assets/bundle.js"></script>,但它只存在于localhost(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 start运行webpack并且还可以用于devServer? –

+0

在'package.json'中为'npm start'定义脚本,它将为您运行'wepack',将此行包含在'package.json':'“scripts”中:{“{”}“webpack- dev-server --color --inline“}' –

+0

嗯......它仍然不会运行webpack(并且写入文件),除非我将它与npm start分开。我有我的package.json {...“脚本”:{“{”}“webpack-dev-server -color --inline” } –