9

プロジェクトで依存関係として使用する必要がある JavaScript ファイルがあります。github リポジトリはなく、bower や npm にもありません。ここにあるだけです。

http://a.klaviyo.com/media/js/learnmarklet.js

次のようにbowerでインストールできます:

bower install http://a.klaviyo.com/media/js/learnmarklet.js --save

私はそれが私のプロジェクトの次の場所にあることを知っています:

./bower_components/learnmarklet/index.js

_learnqそして、グローバルウィンドウオブジェクトに呼び出される変数をアタッチすることを知っています。

私が欲しいのはこれだけです。

var _learnq = require("klaviyo")

klaviyoこのようなエイリアスを作成する必要があります。

{
  "klaviyo": "./bower_components/learnmarklet/index.js"
}

_learnqそして、このような変数のエクスポートを「シム」します。

{
  "klaviyo": "_learnq"
}

webpackでこれを行うにはどうすればよいですか?

これは私が試したもので、これが私のwebpack.config.js外観です。

module.exports = {
  resolve:{
    alias:{
      "klaviyo": "./bower_components/learnmarklet/index.js"
    }
  },
  externals: {
    klaviyo: "_learnq"
  }
}
4

1 に答える 1

9

あなたの例では、コードは一種の競合になります。externals基本的には

require('klaviyo')

に書き換える必要があります

window._learnq

そしてエイリアスは言う

require('klaviyo')

基本的に

require('./bower_components/learnmarklet/index.js')

私がお勧めするのはこれです:

module.exports = {
  resolve:{
    alias:{
      // Make it so that 'require' finds the right file.
      "klaviyo": "./bower_components/learnmarklet/index.js"
    }
  },
  module: {
    loaders: [{
      // Rewrite the file so that it exports the window global.
      test: __dirname + '/bower_components/learnmarklet/index.js',
      loader: 'exports?window._learnq'
    }]
  }
}

あなたもそうする必要がありnpm install exports-loaderます。

于 2015-03-12T18:32:12.103 に答える