我正在尝试为 Adobe XD 构建一个插件。我想在我的代码中使用一些 npm 包和一些 Node.js API。这可能吗?
2 回答
Javascript 支持页面说你可以使用一些 npm 包(有些可能需要 webpack)。但是,不支持 Node.js api。
我可以使用 npm 包或 Node.js API 吗?
您可能无需修改即可使用一些 npm 包,但很有可能您需要使用 webpack 或 rollup 来生成包。
不支持 Node.js API 本身。
您可以在 Adobe XD 插件中使用一些npm 包,但需要牢记以下限制:
XD 的
require
功能不遵循节点式分辨率。也就是说,require('module')
不会自动解析为node_modules/module/index.js
. 为了解决这个问题,您需要使用打包工具,例如webpack。有关使用 webpack 和 React 的示例,请参阅ui-hello-react示例。XD JavaScript 环境不提供许多节点模块可能依赖的大量节点 API。例如,使用 Node
fs
模块的 npm 包将无法在 Adobe XD 插件中运行。然而,纯粹的算法 npm 包应该可以工作,只要它们只依赖于 JavaScript 规范本身。此外,如果您的 npm 包依赖于特定的浏览器 API,Adobe XD 提供的 HTML5 DOM API 环境可能还不够。例如,Web Audio API 不适用于 Adobe XD 插件,因此任何需要使用该模块的 npm 包都无法工作。
对于某些包,添加存根或 polyfill 可能就足够了。例如,requestAnimationFrame
如果模块需要它,您可以存根,如下所示:
global.requestAnimationFrame = cb => cb();
现在这不是功能性rAF,但对于您正在使用的软件包来说可能就足够了。