XD 插件中的 npm 包或 Node.js API
npm packages or Node.js APIs in XD Plugins
我正在尝试为 Adobe XD 构建一个插件。我想在我的代码中使用一些 npm 包和一些 Node.js API。这可能吗?
Javascript support page 说你可以使用一些 npm 包(有些可能需要 webpack)。但是,Node.js api 不受支持。
Can I use npm packages or Node.js APIs?
You may be able to use some npm packages without modification, but
chances are good that you’ll need to use webpack or rollup in order to
generate a bundle.
Node.js APIs themselves are not supported.
您可以在 Adobe XD 插件中使用一些 npm 包,但您需要牢记以下限制条件:
XD 的require
函数不遵循节点式解析。也就是说,require('module')
不会自动解析为 node_modules/module/index.js
。要解决这个问题,您需要使用捆绑器,例如 webpack. For an example using webpack and React, see the ui-hello-react sample.
XD JavaScript 环境不提供许多节点模块可能依赖的大量节点 API。例如,使用 Node 的 fs
模块的 npm 包将无法在 Adobe XD 插件中运行。纯算法 npm 包 应该 工作,但是,只要它们只依赖于 JavaScript 规范本身。
此外,如果您的 npm 包依赖特定浏览器,Adobe XD 提供的 HTML5 DOM API 环境可能不够用 API秒。例如,Web Audio API 不适用于 Adobe XD 插件,因此任何需要使用该模块的 npm 包都无法运行。
对于某些包,添加存根或 polyfill 可能就足够了。例如,如果模块需要它,您可以存根 requestAnimationFrame
,像这样:
global.requestAnimationFrame = cb => cb();
现在这不是功能性 rAF,但对于您正在使用的软件包来说可能已经足够了。
我正在尝试为 Adobe XD 构建一个插件。我想在我的代码中使用一些 npm 包和一些 Node.js API。这可能吗?
Javascript support page 说你可以使用一些 npm 包(有些可能需要 webpack)。但是,Node.js api 不受支持。
Can I use npm packages or Node.js APIs?
You may be able to use some npm packages without modification, but chances are good that you’ll need to use webpack or rollup in order to generate a bundle.
Node.js APIs themselves are not supported.
您可以在 Adobe XD 插件中使用一些 npm 包,但您需要牢记以下限制条件:
XD 的
require
函数不遵循节点式解析。也就是说,require('module')
不会自动解析为node_modules/module/index.js
。要解决这个问题,您需要使用捆绑器,例如 webpack. For an example using webpack and React, see the ui-hello-react sample.XD JavaScript 环境不提供许多节点模块可能依赖的大量节点 API。例如,使用 Node 的
fs
模块的 npm 包将无法在 Adobe XD 插件中运行。纯算法 npm 包 应该 工作,但是,只要它们只依赖于 JavaScript 规范本身。此外,如果您的 npm 包依赖特定浏览器,Adobe XD 提供的 HTML5 DOM API 环境可能不够用 API秒。例如,Web Audio API 不适用于 Adobe XD 插件,因此任何需要使用该模块的 npm 包都无法运行。
对于某些包,添加存根或 polyfill 可能就足够了。例如,如果模块需要它,您可以存根 requestAnimationFrame
,像这样:
global.requestAnimationFrame = cb => cb();
现在这不是功能性 rAF,但对于您正在使用的软件包来说可能已经足够了。