0

我几乎不想让我现有的 ng2-prototype 在meteor1.3 设置中运行。到目前为止,我正在使用 webpack 构建原型,并且有一个提供插件可以在模块构建期间使 jQuery 或 Tether 之类的东西可用:

plugins: [
  new ProvidePlugin({
     $: "jquery",
     jQuery: "jquery",
     "window.jQuery": "jquery",
     "window.Tether": "tether"
  })
]

正如你所看到的,我对“tether”做了同​​样的事情,因为它仍然是 bootstrap 4 alpha 所需的库。

现在我想知道如何在我的 meteor1.3 项目中实现同样的目标..?正如包“angular2-meteor”的更新日志中所写的,它现在在后台使用 webpack 来构建所有内容。

angular2-meteor 更新日志

所以,应该可以在meteor1.3中再次使用相同的提供插件,对吧?但是……怎么办?

4

1 回答 1

2

从“angular2-meteor”的github问题线程:

有多种方法:您可以安装https://atmospherejs.com/coursierprive/tether,或者,由于 Meteor 1.3 现在更喜欢 NPM,您可以安装 Tether NPM 并在使用引导程序 4 之前需要它,或者,如果您想要更多控制和模块化,您可以创建自己的本地包(在 packages 文件夹中),其中包含您需要的所有依赖项(从 NPM 添加),包括 Tether(类似于 angular2-runtime 在此 repo 中完成的方式)。

我会试试这个,我已经确定这会成功:) 很多谢谢@barbatus ;)

更新:

好的,我将使用 npm 包解决方案,我已经安装了系绳。如果没有,请先执行以下操作:

npm install --save tether

现在,单个require语句还不够。我试图完全包含的 bootstrap 4 正在请求一个window.Tether函数。所以我最终这样做了:

let Tether = require('tether');
window.Tether = Tether;

// import all bootstrap javascript plugins
require('bootstrap');

很酷的是,现在还有一个类型定义文件,只需通过运行添加它:

typings install --save --ambient tether

将其添加到窗口全局上下文后,错误消失了……但是,通过 webpack 提供插件的解决方案感觉更干净 -> 它会在构建期间分别为每个模块提供 Tether 对象,所以它不会结束毕竟生活在window global context中。但我很幸运现在能运行它:)

PS:无论如何,jQuery 都是由流星提供的,这就是它已经足以通过仅包括系绳来运行它的原因。

更新:是的,默认情况下包含 jQuery - 但它只是 /.meteor/packages 文件中的一个包;)

于 2016-03-24T12:15:26.653 回答