【发布时间】:2019-02-15 02:33:30
【问题描述】:
更新
我为获得功能齐全的 InDesign CC 2018/2019 CEP 面板所做的所有工作都在 https://github.com/theasci/cep-boostrap 中。我能够成功地让 npm 包在 CEP 面板的客户端和主机部分以及脚本面板中工作。但是,node 和 ExtendScript 版本已经过时了。详情请见repo READMEs
原始问题
我在 AppleScript 中有大量脚本,主要用于 InDesign CC 2018,我正尝试在 ExtendScript 中重做(为了可移植性)。随着最近 ExtendScript Debugger for Visual Studio Code 的预发布,我已经让堆栈开始工作了。我可以通过 InDesign 使用内置的 $.write() 和 alert() 登录控制台并显示警报。
我想利用 npm 包的优点来进行繁重的工作,但我无法让它们正确加载。例如,我想加载相当简单的节点记录器(与 winston 相比),但加载我能找到的所有垫片似乎不起作用。
这是我的index.jsx 文件的示例
// Any attempt to write to a read-only property causes a runtime error.
$.strict = true
// Run this script within the InDesign application
#target indesign
var rootDir = File($.fileName).path;
// Load ExtendScript monkey patches to allow for Node.js related functionality
$.evalFile(rootDir + '/vendor/node_modules/extendscript-es6-shim/index.js'); //loads fine
$.evalFile(rootDir + '/vendor/node_modules/extendscript.prototypes/lib/extendscript.prototypes.js'); //loads fine
$.evalFile(rootDir + '/vendor/es-require/lib/require.js'); //loads fine
$.evalFile(rootDir + '/vendor/node_modules/node-logger/logger.js'); //Error: require is not a function
alert("If you're here, it's working!");
我的.vscode/launch.json 看起来像这样
{
"version": "0.2.0",
"configurations": [
{
"type": "extendscript-debug",
"request": "launch",
"name": "Project name",
"program": "${workspaceFolder}/source/index.jsx",
"targetSpecifier": "indesign-13.064",
"engineName": "main",
}
]
}
如您所见,我有点不知所措,因为 node 和 npm 对我来说是新的。似乎 ExtendScript 没有引入节点模块所需的功能。人们似乎也朝着另一个方向前进:从节点开始,然后执行 ExtendScript。
问题
- 人们是否会将最新版本的 npm 包加载到 ExtendScript 中?如果有,怎么做?
- 我应该这样做吗?如果没有,使用带有 ExtendScript 的 npm 模块来自动化 Adobe 产品中的内容的最佳方法是什么?
环境
- Mac OSX El Capitan 10.11.6(也在 High Sierra 上尝试过,结果相同)
- Visual Studio 代码 1.31.1
- 用于 VSCode 0.2.4 的扩展脚本调试器插件
-
npm config list说user-agent = "npm/6.5.0 node/v11.9.0 darwin x64"
提前感谢您对这个可怜的灵魂的怜悯。
【问题讨论】:
标签: node.js macos npm adobe extendscript