2017-04-12 15 views
0

こんにちは私は現在、webpackを使用してプロジェクトファイルを1つのファイルにバンドルしています。しかし、私はすべての私の設定が設定されている私のconfig.jsファイルをバンドルするwebpackをしたくありません。私はこれを出力フォルダ内で別々のままにしたいが、これを達成するためには確かではない。webpackでバンドルされている.jsファイルを防止するには

私の現在の設定は

//index.js file 
#!/usr/bin/env node 
'use strict'; 
let config = require('config.js); 
let read = require('read.js); 
console.log('i am running through command line'); 

//read.js file 
'use strict' 
console.log('read a text file'); 

//config.js 
'use strict'; 
module.exports = { 
name: 'test' 
} 

//webpack.config.js 
let webpack = require('webpack'); 
let path = require('path'); 
let fs = require('fs'); 

let nodeModules = {}; 
fs.readdirSync('node_modules') 
.filter(function (x) { 
    return [ '.bin' ].indexOf(x) === -1; 
}) 
.forEach(function (mod) { 
    nodeModules[mod] = 'commonjs ' + mod; 
}); 

module.exports = { 
entry: [ 'babel-polyfill', './index.js' ], 
target: 'node', 
node: { 
    __dirname: true 
}, 
output: { 
    path: path.join(__dirname, 'webpack_bundle'), 
    filename: '[name].js', 
    libraryTarget: 'commonjs' 
}, 
module: { 
    loaders: [ 
     { 
      test: /\.js$/, 
      loader: 'shebang-loader' 
     }, 
     { 
      test: /\.js$/, 
      loader: 'babel-loader', 
      query: { 
       presets: [ 'es2015' ] 
      } 
     } ] 
}, 
resolve: { 
    extensions: [ '.js' ] 
}, 
plugins: [ 
    new webpack.BannerPlugin({banner: '#!/usr/bin/env node', raw: true 
}) 
] 
, 
    externals: nodeModules 
}; 

。注:私はindex.jsファイルを含むフォルダwebpack_bundleを取得webpackコマンドを実行したときに、私は非常に簡潔現在

のためのコード例を簡素化している - インデックス.jsファイルには、依存関係config.jsread.jsが含まれています。しかし、私が望むのは、read.js依存関係をindex.jsファイルにバンドルするのに対して、config.js依存関係はバンドルされたWebpack出力で必要となる別のファイルに外部依存することです。したがって、webpackコマンド(index.jsおよびconfig.js)を実行した後に、フォルダwebpack_bundleに2つのファイルが含まれている必要があります。私はすでに外部オブジェクトconfig: './config.js'に次のキー値を追加して外部を修正しようとしましたが、これは機能しませんでした。私はエントリーポイントとしてconfig.jsを指定することによって余分なエントリーポイントを作成しましたが、これもうまくいきませんでした。私はこれを理解することができず、webpackのドキュメントはこれを達成する方法についてはっきりしていません。助けてください!

+0

ここに記載されているローダー配列で除外を使用してください。https://webpack.github.io/docs/configuration.html#module-loaders –

+0

私はあなたの提案を試みましたが、これは – Dev

答えて

3

あなたが別のバンドルにあなたの設定をしたい場合は、あなたが動的にrequire.ensureであなたのconfig.jsファイルインポートすることにより、スプリットポイントを作成することができます:あなたの設定は、その後、別のバンドルになります

require.ensure([], function() { 
    let config = require('./config.js'); 
}); 

を。

  • ドキュメントを、約Code splitting(警告:WebPACKの1.xのが推奨されていません)。
  • ドキュメントについてCode Splitting(Webpack 2)。

編集:

あなたの設定ファイルは、WebPACKのでバンドルされたくない場合は、私はあなたがIgnorePluginを使用することができると思う:

module.exports = { 
    //... 
    plugins: [new webpack.IgnorePlugin(/^\.\/config\.js$/)] 
} 

そしてcopy-webpack-pluginを使用config.jsファイルをコピーしてください。

+0

を目指していますが、これは何が目的ではありません達成したいのですが、別のファイルが必要なのですが、webpackで処理された別のバンドルを必要としません。config.jsファイルをそのまま変更しないでください。だから本質的には、webpackにファイルを無視したいが、それに必要な呼び出しを保持したいだけだ。 – Dev

+0

私は私の答えを編集しました。 IgnorePluginプラグインをテストすることをお勧めします。 –

+0

あなたの提案通りにプラグインを無視しようとしましたが、ファイルがまだwebpackに含まれていて無視されません:( – Dev

関連する問題