首页 > 解决方案 > 如何。如果可能,我是否使用 Visual Studio Community 2019 为 jsx ExtendScript 文件创建 *.jsxbin(导出为二进制文件)

问题描述

目前,我在 Windows 中使用 Adob​​e 的 ExtendScript Toolkit 仅从我使用 Visual Studio Community 2019(不是 VS Code!)编写的 jsx 文件生成 jsxbin 文件。我还处理我的 C++ Photoshop 插件代码并在 VS2019 中构建。我知道我可以在 VSCode 中编辑和创建 jsx/jsxbin 文件,但我希望一切都使用 VS2019。如果我可以轻松地将插件的 C++ 构建转移到 VSCode,我可能会这样做。我还没有找到任何关于如何做到这一点的信息。

有人告诉我,我可以使用这个Convert jsx ExtendScript files into jsxbin files using ExtendScript Toolkit ,但我不知道如何使用它。我无法让告诉我这件事的人提供帮助,也找不到作者的联系信息。

感谢您耐心等待我继续前进。

朗克

标签: jsxextendscript

解决方案


您可以创建一个临时 js 脚本并使用 ESTK 运行它。如果您使用诸如 Gulp/Grunt/Webpack 之类的构建工具会更容易。

这是一个使用 NodeJS 在 Windows 上执行 Gulp 任务的基本示例:

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. 在“Export_to_JSXBIN”示例文件夹中打开 CMD/终端/GitBash ( https://git-scm.com/downloads )。

  3. 全局安装 Gulp:npm install -g gulp

  4. 然后:npm install

  5. 将要编码的 .jsx/ .js 文件放入“jsx_sources”

  6. 从命令行类型:gulp encodeJS

将创建一个新文件夹“jsx_encoded”,其中包含扩展名为 .jsx 的 .jsxbin 文件,所有内容都格式化为一行。

当然,如果适合您的需要,您当然可以保持扩展名不变,并将编码的 JS 写入与源文件相同的文件夹中。

'gulpfile.js' 的内容应该很容易理解。

哦...并检查 ESTK 路径 (var estkPath),尤其是在您使用 Mac 时。

Export_to_JSXBIN Gulp 示例:https ://url.io/export_to_jsxbin

Gulp 任务也可以从您的 IDE 启动。我相信你可以找到一个扩展。


推荐阅读