更新
我完成了所有工作,使得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,我已经让它工作了。我能够通过内置的
$.write()
和alert()
在InDesign中记录到控制台并显示警报。我想使用npm包来完成繁重的工作,但我无法正确加载它们。例如,我想加载相当简单的node-logger(与winston相比),但是即使加载了所有我能找到的shims,似乎也不起作用。
这是我的
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没有需要拉入node模块的require功能。同时,人们似乎朝另一个方向发展:从node开始,然后执行ExtendScript。
问题:
- 人们是否将最新版本的npm包加载到ExtendScript中?如果是,怎么做?
- 我应该这样做吗?如果不是,使用npm模块以自动化Adobe产品中的操作的最佳方法是什么?
- Mac OSX El Capitan 10.11.6(也在High Sierra上尝试过,结果相同)
- Visual Studio Code 1.31.1
- ExtendScript Debugger Plugin for VSCode 0.2.4
npm config list
显示user-agent = "npm/6.5.0 node/v11.9.0 darwin x64"