jsx - 如何。如果可能,我是否使用 Visual Studio Community 2019 为 jsx ExtendScript 文件创建 *.jsxbin(导出为二进制文件)
问题描述
目前,我在 Windows 中使用 Adobe 的 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 ,但我不知道如何使用它。我无法让告诉我这件事的人提供帮助,也找不到作者的联系信息。
感谢您耐心等待我继续前进。
朗克
解决方案
您可以创建一个临时 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 或任何其他构建工具之前,我已经做了一个您可以使用的快速设置。
安装 NodeJS:https ://nodejs.org/en/
在“Export_to_JSXBIN”示例文件夹中打开 CMD/终端/GitBash ( https://git-scm.com/downloads )。
全局安装 Gulp:
npm install -g gulp
然后:
npm install
将要编码的 .jsx/ .js 文件放入“jsx_sources”
从命令行类型:
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 启动。我相信你可以找到一个扩展。
推荐阅读
- dotnetnuke - DotNetNuke SMTP 不工作 注册新用户
- sql-server - 我们是否应该使用 order by 子句中使用的列作为 NC INDEX 的包含列
- data-structures - 无法理解队列指数方程
- java - 检查数组是否可以是零数组
- magento - Magento 2 || 多存储与多实例 - 优点和缺点?
- python - 我想将列表中的元素从字符串格式更改为整数,我应该如何处理它?
- docker - ingress-nginx:luarocks make:不允许操作
- python - Python 请求 HTML - img src 被数据刮掉:image/gif;base64
- typescript - 如何在不预先填充字段的情况下将类型转换为对象?
- python - 在 Python 中不使用 for 循环将值从列表分配到字典