1

我正在尝试为 Adob​​e XD 构建一个插件。我想在我的代码中使用一些 npm 包和一些 Node.js API。这可能吗?

4

2 回答 2

4

Javascript 支持页面说你可以使用一些 npm 包(有些可能需要 webpack)。但是,不支持 Node.js api。

我可以使用 npm 包或 Node.js API 吗?

您可能无需修改即可使用一些 npm 包,但很有可能您需要使用 webpack 或 rollup 来生成包。

不支持 Node.js API 本身。

于 2018-11-08T18:27:31.400 回答
3

您可以在 Adob​​e XD 插件中使用一些npm 包,但需要牢记以下限制:

  • XD 的require功能不遵循节点式分辨率。也就是说,require('module')不会自动解析为node_modules/module/index.js. 为了解决这个问题,您需要使用打包工具,例如webpack。有关使用 webpack 和 React 的示例,请参阅ui-hello-react示例。

  • XD JavaScript 环境不提供许多节点模块可能依赖的大量节点 API。例如,使用 Nodefs模块的 npm 包将无法在 Adob​​e XD 插件中运行。然而,纯粹的算法 npm 包应该可以工作,只要它们只依赖于 JavaScript 规范本身。

  • 此外,如果您的 npm 包依赖于特定的浏览器 API,Adobe XD 提供的 HTML5 DOM API 环境可能还不够。例如,Web Audio API 不适用于 Adob​​e XD 插件,因此任何需要使用该模块的 npm 包都无法工作。

对于某些包,添加存根或 polyfill 可能就足够了。例如,requestAnimationFrame如果模块需要它,您可以存根,如下所示:

global.requestAnimationFrame = cb => cb();

现在这不是功能性rAF,但对于您正在使用的软件包来说可能就足够了。

于 2018-11-08T21:22:33.810 回答