Как. если возможно, я создаю * .jsxbin (экспорт в двоичный файл) для файлов jsx ExtendScript, используя Visual Studio Community 2019 - PullRequest
0 голосов
/ 12 февраля 2020

В настоящее время я использую ExtendScript Toolkit от Adobe в Windows, чтобы генерировать только файл jsxbin из файлов jsx, которые я кодирую с помощью Visual Studio Community 2019 (не VS Code!). Я также работаю с кодом плагина C ++ Photoshop и сборкой в ​​VS2019. Я знаю, что могу редактировать и создавать файлы jsx / jsxbin в VSCode, но хотел бы остаться с VS2019 для всего. Если бы я мог легко перенести сборку C ++ для плагина в VSCode, я мог бы это сделать. Я не нашел ничего о том, как это сделать.

Мне сказали, что я могу использовать это Преобразование файлов jsx ExtendScript в файлы jsxbin с использованием ExtendScript Toolkit , но я понятия не имею, как его использовать , Я не могу заставить человека, который сказал мне об этом, помочь, и я не могу найти контактную информацию для автора.

Я ценю ваше терпение за мою работу.

RON C

1 Ответ

0 голосов
/ 14 февраля 2020

Вы можете создать временный скрипт js и запустить его с помощью ESTK. Проще, если вы используете инструмент сборки, такой как Gulp / Grunt / Webpack.

Вот базовый c пример для задачи Gulp на Windows, используя NodeJS:

const exec = require('child_process').exec;
const path = require('path');
const fs = require('fs');
const del = require('del');
const log = require('gutil-color-log'); // OPTIONAL

var myJSFilePath = 'PATH\\TO\\MY\\JS\\FILE.jsx';

exports.encodeToJSXBIN = toJSXBIN;

function toJSXBIN (done)
{
  var jsxbinFilePath = path.join(path.dirname(myJSFilePath), path.parse(myJSFilePath).name + '.jsxbin'), // Will be written in the same folder as your .jsx file
  compilerScriptPath = path.join('FOLDER\\PATH\\TO\\TEMPORARY\\SCRIPT', 'compiler.jsx'),
  estkPath = "PATH\\TO\\ExtendScript Toolkit.exe", // Could be: C:\\Program Files (x86)\\Adobe\\Adobe ExtendScript Toolkit CC\\ExtendScript Toolkit.exe
  estkCommand = JSON.stringify(estkPath) + ' -cmd ' + JSON.stringify(compilerScriptPath),
  compilerScript = "#target estoolkit#dbg\n" +
  "\n" +
  "var jsxbinContent, jsxbinFile;\n" +
  "\n" +
  "jsxbinContent = app.compile(" + JSON.stringify(fs.readFileSync(myJSFilePath, 'utf8')) + ");\n" +
  "jsxbinFile = File(" + JSON.stringify(jsxbinFilePath) + ");\n" +
  "jsxbinFile.open(\"w\");\n" +
  "jsxbinFile.write(jsxbinContent);\n" +
  "jsxbinFile.close();";

  fs.writeFileSync(compilerScriptPath, compilerScript);

  exec(estkCommand, (err, stdoutA, stderrA) =>
  {
    if (err)
    {
      log('red', err.toString()); // OPTIONAL
      done();
    }

    del([compilerScriptPath], {force: true}); // Remove the temporary compiler.jsx file

    /*
    - OPTIONAL step
    - single line .jsxbin file
    - you can also replace .jsxbin extension with .jsx if you want
    */
    fs.writeFileSync(jsxbinFilePath, fs.readFileSync(jsxbinFilePath, 'utf8').replace(/[\r\n]+/gm, ''));

    done();
  });
}

РЕДАКТИРОВАТЬ # 1:

Пока вы не ознакомитесь с NodeJS и Gulp или любым другим инструментом сборки, я сделал быструю настройку, которую вы можете использовать.

  1. Установить NodeJS: https://nodejs.org/en/

  2. Открыть CMD / терминал / GitBash (https://git-scm.com/downloads ) в папке примеров «Export_to_JSXBIN».

  3. Установите Gulp в глобальном масштабе: npm install -g gulp

  4. Затем: npm install

  5. Поместите ваши файлы .jsx /. js, которые вы хотите закодировать, в 'jsx_sources'

  6. Из командной строки введите: gulp encodeJS

Будет создана новая папка 'jsx_encoded', которая будет содержать файлы .jsxbin с расширением, измененным на .jsx, и весь контент, отформатированный в одну строку.

Конечно, вы можете оставить расширение без изменений и написать код d JS в той же папке, что и исходный файл, если это соответствует вашим потребностям.

Содержание 'gulpfile. js' должно быть легко понять.

Ооо .. и проверьте путь ESTK (var estkPath), особенно если вы на ма c.

Export_to_JSXBIN Образец глотка: https://url.io/export_to_jsxbin

Задачи Gulp также можно запускать из вашей IDE. Я уверен, что вы можете найти расширение для этого.

...