Tho*_*ggi 8 javascript webpack
我需要在项目中使用javascript文件作为依赖项.它没有github存储库,它不是凉亭,或者是npm,它只是住在这里.
http://a.klaviyo.com/media/js/learnmarklet.js
我可以用凉亭安装它:
bower install http://a.klaviyo.com/media/js/learnmarklet.js --save
Run Code Online (Sandbox Code Playgroud)
我知道它会在我的项目中生活:
./bower_components/learnmarklet/index.js
Run Code Online (Sandbox Code Playgroud)
我知道它附加了一个调用_learnq全局窗口对象的变量.
我想要的只是这个.
var _learnq = require("klaviyo")
Run Code Online (Sandbox Code Playgroud)
我需要别名klaviyo这样的东西.
{
"klaviyo": "./bower_components/learnmarklet/index.js"
}
Run Code Online (Sandbox Code Playgroud)
并且"shim" _learnq像这样导出变量.
{
"klaviyo": "_learnq"
}
Run Code Online (Sandbox Code Playgroud)
我怎么能用webpack做到这一点?
这就是我尝试过的,这就是我的webpack.config.js样子.
module.exports = {
resolve:{
alias:{
"klaviyo": "./bower_components/learnmarklet/index.js"
}
},
externals: {
klaviyo: "_learnq"
}
}
Run Code Online (Sandbox Code Playgroud)
在你的例子中,你的代码会发生冲突,externals基本上说
require('klaviyo')
Run Code Online (Sandbox Code Playgroud)
应该改写成
window._learnq
Run Code Online (Sandbox Code Playgroud)
别名说
require('klaviyo')
Run Code Online (Sandbox Code Playgroud)
基本上
require('./bower_components/learnmarklet/index.js')
Run Code Online (Sandbox Code Playgroud)
我建议的是:
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'
}]
}
}
Run Code Online (Sandbox Code Playgroud)
你也需要npm install exports-loader.
| 归档时间: |
|
| 查看次数: |
5820 次 |
| 最近记录: |