2015-03-12 69 views
7

Projemde bağımlılık olarak kullanmam gereken bir javascript dosyası var. Github deposu yok, bower değil ya da npm, sadece burada yaşıyor. o bir değişken verdiğiWebpack ile bir paketin kırpılması

./bower_components/learnmarklet/index.js 

Ve biliyorum: Ben o zaman benim projede yaşayacak biliyoruz

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

:

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

Birlikte kulübeye ile yükleyebilirsiniz global pencere nesnesine _learnq denir.

Sadece istediğim bu.

var _learnq = require("klaviyo") 

böyle klaviyo şey diğer ad gerekiyor.

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

Ve "pul" Böyle _learnq değişkenin bir ihracat.

{ 
    "klaviyo": "_learnq" 
} 

Bunu webpack ile nasıl yapabilirim?

Denediğim şey bu, benim webpack.config.js benim gibi görünüyor. Örnekte

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

cevap

8

, kodunuz olacak tür çatışma, externals temelde

require('klaviyo') 

window._learnq 

için yazılmış ve takma

require('klaviyo') 
diyor diyor Temel olarak

yanı

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' 
    }] 
    } 
} 

You'nun ihtiyacı için npm install exports-loader: Ne tavsiye ederim budur

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

yapar.

+0

Bunu cevap olarak kabul ettiğim için mutluyum. Çalışması gerektiğine inanıyorum. Bu betiğin yaratılmasından dolayı yanımda bazı garip hatalar alıyorum. Görünüşe göre nodejs paketleri fs, dosya ve sistem https://gist.github.com/reggi/628736bdb70a2a98deae – ThomasReggi

+0

Ahh için kesinlikle kullanım bağlı olacaktır. Kod, kritik bir şey için dosya sistemine bağlıysa, kütüphane tarayıcıda kullanılamaz durumda olabilir. – loganfsmyth

+0

Hayır! Bu tarayıcı için! Düğüm içinde çalıştığı zaman için koşullu gereksinimlere sahiptir. Web paketi içinde çalıştırıldığında, bu koşullar bir CommonJS ortamı olduğundan kırılır. – ThomasReggi