Обновить
Вся моя работа по созданию полностью функционирующей панели InDesign CC 2018/2019 CEP находится на https://github.com/theasci/cep-boostrap. Мне удалось успешно заставить пакеты npm работать как в клиентской, так и в хостовой части панели CEP, а также в панели сценариев. Однако версии node и ExtendScript ужасно устарели. См. репозиторий README. Больше подробностей
Исходный вопрос
У меня есть большая коллекция сценариев в AppleScript, в основном для InDesign CC 2018, которые я пытаюсь переделать в ExtendScript (для переносимости). Благодаря недавнему предварительному выпуску отладчика ExtendScript для кода Visual Studio я заставил стек работать. Я могу войти в консоль и отображать оповещения, используя встроенные функции $.write()
и alert()
через InDesign.
Я хотел бы использовать пакет 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? Если да, то как?
- Должен ли я это сделать? Если нет, то как лучше всего использовать модули npm с ExtendScript для автоматизации вещей в продуктах Adobe?
Окружающая среда
- Mac OSX El Capitan 10.11.6 (также пробовал на High Sierra, с тем же результатом)
- Код Visual Studio 1.31.1
- Плагин отладчика ExtendScript для VSCode 0.2.4
npm config list
говоритuser-agent = "npm/6.5.0 node/v11.9.0 darwin x64"
Заранее спасибо за то, что пожалели эту бедную душу.