javascript - 用 webpack 填充一个包

标签 javascript webpack

我需要在我的项目中使用一个 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"
  }
}

最佳答案

在你的例子中,你的代码会有点冲突,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

关于javascript - 用 webpack 填充一个包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29017440/

相关文章:

javascript - 应用程序中的 Meteor 服务器端渲染

javascript - 在某些零售网站上围绕某些美元值(value)进行报价的目的是什么?

css - 尝试使用 webpack 4 从 scss 文件中获取 css 文件

javascript - 当通过另一个 React 应用程序中的脚本标签导入时,作为 UMD 捆绑的 React 组件无法加载依赖项

angular - 如何将 AMD 与 angular-cli 一起使用?

javascript - 在 Javascript 中将大十进制数转换为字符串

javascript - 由javascript创建的div不接受通过javascript输入的css数据

node.js - 由于 jsPDF,Webpack HMR 抛出 React syntheticEvent 错误

reactjs - Webpack 不会为生产 css 文件中的图像创建正确的路径

javascript - 将字符串解析成字典