2016-08-09 1 views
2

私は動的に生成されたWebpackモジュールベースをユーザー入力で作成しています。webpack.configの代わりに.jsファイルからwebpackを設定して実行するには

Standard static way configのフォルダを指定し、babel-loaderでwebpackを実行すると正しく動作します。

var path = require('path'); 

var webpack = require('webpack'); 
var CopyWebpackPlugin = require('copy-webpack-plugin'); 

var dir_js = path.resolve(__dirname, 'js'); 
var dir_html = path.resolve(__dirname, 'html'); 
var dir_build = path.resolve(__dirname, 'build'); 

module.exports = { 
    entry: path.resolve(dir_js, 'main.js'), 
    output: { 
     path: dir_build, 
     filename: 'bundle.js' 
    }, 
    devServer: { 
     contentBase: dir_build, 
    }, 
    module: { 
     loaders: [ 
      { 
       loader: 'babel-loader', 
       test: dir_js, 
      } 
     ] 
    }, 
    plugins: [ 
     // Simply copies the files over 
     new CopyWebpackPlugin([ 
      { from: dir_html } // to: output.path 
     ]), 
     // Avoid publishing files when compilation fails 
     new webpack.NoErrorsPlugin() 
    ], 
    stats: { 
     // Nice colored output 
     colors: true 
    }, 
    // Create Sourcemaps for the bundle 
    devtool: 'source-map', 
}; 

しかし、動的にモジュールを作成したい場合は、静的設定ファイルを使用します。 私はちょっとgoogleをいくつかの特定の設定でJSファイルからwebpackを直接呼び出すことができます。私はnode index.js経由でこのファイルを呼び出すとき

var webpack = require('webpack'); 
webpack({ 
    entry: './main.js', 
    output: { 
     filename: 'bundle.js' 
    } 
}, function(err, stats) { 
    // console.log(stats); 
    console.log(err); 
}); 

残念ながら何も、起こっていない:

var webpack = require("webpack");  
// returns a Compiler instance 
webpack({ 
    // configuration 
}, function(err, stats) { 
    // ... 
}); 

ので、私は本当に簡単index.jsが何かを作成します。私はTHIS

呼び出すためのオプションがある場合を見つけましたconsole.log(err)の出力はnull です。この時点から、私は何か他の有用なものは見つけられませんでした。

私はここに経験があり、私が間違っていることを知らせる人がいれば幸いです。それとも、それをどうやって作成するのかを別の方法で教えてください。

+1

'main.js 'は存在していますか?その正確なコードは私のために問題なく動作します。 – robertklep

+0

あなたの答えにちょっと@robertklepありがとうございます。はい、私はそれが存在すると確信しています。それは私が(http://www.upnito.sk/0/8s92fx26y6khngumhe7drdth3yt9997q.PNG)を呼び出すindex.jsと同じfoderで、私は理由であるかもしれないnode.jsを使用していません – Andurit

+1

ええ、私はテストしましたNodeを使用します。 ''。/ main.js''の代わりに、 '__dirname + '/ main.js''を試してください。 – robertklep

答えて

1

通常、完全な使用するのが最善ですコンフィグレーションがダイナミックであっても、Webpackコンフィグレーションのパスを変更できます。

entry: path.resolve(__dirname, 'main.js'); 

(同様にoutput.filenameの場合)

+0

ありがとう@robertklep :) – Andurit

1

エントリファイルが存在するかどうかを確認してください。

console.log(stats.toString());を追加することをおすすめします。このようにして、さらに便利な出力が得られます。たとえエラーがなかったとしても。

私はmain.jsを削除し、統計から次の出力を得た:

ERROR in Entry module not found: Error: Cannot resolve 'file' or 'directory' ./main.js in <some dir> 

それが存在する場合は、そのようなことは、あなたの端末に表示されます:

$ node index.js 
Hash: 042eac64f1d594f97cd4 
Version: webpack 1.13.1 
Time: 38ms 
    Asset  Size Chunks    Chunk Names 
bundle.js 1.41 kB  0 [emitted] main 
chunk {0} bundle.js (main) 19 bytes [rendered] 
    [0] ./main.js 19 bytes {0} [built] 
+0

ちょっと@セバスチャンSebald、あなたのヒントありがとうございます。私はそれを強打する。ちょうど数秒前に私は再び私のコードを動作させるrobertklepの答えに気づいた。 – Andurit

関連する問題