汇总:全局和外部

Posted

技术标签:

【中文标题】汇总:全局和外部【英文标题】:Rollup: globals & external 【发布时间】:2017-11-14 16:27:58 【问题描述】:

我正在尝试汇总我的完整 es6 模块存储库,该存储库既有项目的本地导入/导出,也有对也是脚本或模块的依赖项的导入。

我也在尝试进行双重构建,通过汇总创建旧的 iife 模块。

这仅适用于我的项目,没有问题。困难在于我的依赖项有导入。

Rollup 的全局变量和外部选项应该会有所帮助,但到目前为止,我还没有成功地公开这些并汇总到一个 iffe。我明白了 http://backspaces.github.io/asx/libs/three.module.js' is imported by src/Three.js, but could not be resolved – treating it as an external dependency

错误和其他。结果汇总不是我想要的:将 iife 汇总转换为期望依赖项是全局的,因此从汇总中删除。

我意识到这是一个非常普遍的问题,但我只想知道如何使用这两个选项来管理我的 repo,以便我可以导入依赖项并可以在汇总中“删除”它们。

谁能清楚地解释它们以及它们的作用?汇总 wiki 有点帮助,但还不够完整。

【问题讨论】:

【参考方案1】:

为了让 Rollup 能够包含依赖项,它必须能够找到它。它没有任何用于获取远程 URL 的内置逻辑,例如 http://backspaces.github.io/asx/libs/three.module.js(可以作为插件完成,但 AFAIK 尚未编写该插件,我可能建议不要这样做)。

相反,您最好像这样从 node_modules 导入模块...

import THREE from 'three';

...并将node-resolve 和commonjs 添加到生成IIFE 的配置中。

对于生成非 IIFE 构建的配置,其中 Three.js 保留在外部,您需要使用 paths 配置将 three 指向 URL:

// rollup.config.js
export default 
  entry: 'src/main.js', // or whatever
  // ...
  external: ['three'], // so it's not included
  paths: 
    three: http://backspaces.github.io/asx/libs/three.module.js
  
;

【讨论】:

谢谢:一个小问题:对于 iife 构建,我真的希望完全删除三个导入,假设我将 哦,我只想说 Rollup 非常棒,谢谢! 谢谢!当您说完全删除时,您的意思是您希望将 THREE 捆绑到您的 IIFE 中,或者您想删除 import 声明但将 THREE 保留为单独的 <script> 标签?如果是第一个,请使用 node-resolve 插件,以便 Rollup 可以找到它。如果第二个,external:['three'], global: three: 'THREE' 说'不要捆绑 Three.js,只需从全局命名空间中获取它,顺便说一下,它被称为 window.THREE 从 2020 年开始更新,我不得不将“路径”放在“输出”属性中。为了让它工作。 Emm...如果我从特定的本地路径而不是“三个”模块中导入三个怎么办。

以上是关于汇总:全局和外部的主要内容,如果未能解决你的问题,请参考以下文章

QT/C++外部变量或者全局变量怎么使用,来个能说清楚的。

JavaWeb-Ajax笔记汇总 --- 全局刷新和局部刷新;ajax 中使用 XMLHttpRequest 对象(四步);json 的使用

SpookyJS 中的全局变量和外部函数

C++面试题目汇总

高并发分布式系统中生成全局唯一Id汇总

为啥我不能为 C 函数外部的全局变量赋值?