2016-11-23 4 views
9

ウェブパックを#!/usr/bin/env nodeのファイルの先頭に置く方法はありますか?ウェブパックを使ってシバンを保持するには?

私はモジュールと一緒にCLIをバンドルしようとしています...私はindex.js/cli.jsを1つのコンフィギュレーションファイルだけを使って別々にエクスポートするのが少し難解でした...そしてcliにインデックスが必要です...私はそれを動作させました...

しかし.. #!/usr/bin/env nodeを私のCLIファイルの上に残す方法はありませんでした。ショートパンツで

WebPACKのこのようなファイルに出力:

/******/ (function(modules) { // webpackBootstrap 
/******/ // The module cache 
/******/ var installedModules = {}; 

/******/ // The require function 
/******/ function __webpack_require__(moduleId) { 

/******/  // Check if module is in cache 
/******/  if(installedModules[moduleId]) 
/******/   return installedModules[moduleId].exports; 
.............................................................. 

をしかし、私は必要なのあなたは、このために、rawモードでBannerPluginを使用することができるはず

#!/usr/bin/env node //<------ HEREEEE 

/******/ (function(modules) { // webpackBootstrap 
/******/ // The module cache 
/******/ var installedModules = {}; 

/******/ // The require function 
/******/ function __webpack_require__(moduleId) { 

/******/  // Check if module is in cache 
/******/  if(installedModules[moduleId]) 
/******/   return installedModules[moduleId].exports; 

.............................................................. 
+0

こんにちはたRaf、行く輸出必要なものを得ることに大きな仕事:あなたのwebpack.config.jsファイルで

。なぜwebpackがシバンを取り除いていると思いますか?いくつかのコードを見せてください。 –

+0

'#!/ usr/bin/env node'は' node cli.js'のショートカットとして使われているので、コマンドラインでバイナリであるかのようにスクリプトを呼び出すことができます...しかし、webpack bootstrapはすべてをクリーンアップします...その最初の行には '#!/ usr/bin/env node'が含まれていなければなりません。 –

答えて

11

です。このプラグインを使用すると、バンドルの先頭に任意の文字列を追加できます。 RAWモードを使用すると、文字列をコメントにラップしません。

plugins: [ 
    new webpack.BannerPlugin('#!/usr/bin/env node', { raw: true }); 
] 
+3

パーフェクト...このプラグインについてはわかりませんでした。 new webpack.BannerPlugin({banner: "#!/ usr/bin/env node"、raw:true}); '' ' –

+0

ニース!ライブと学習:-D –

+3

このAPIは推奨されていません。 Webpack 2.2.1に必要な行は 'new webpack.BannerPlugin({banner: '#!/ usr/bin/env node'、raw:true})' – LINKIWI

関連する問題