AEM 命令行接口 (aem(中文(简体) )
状态
AEM指令行接口允许网络开发者使用Adobe体验管理器站点功能创建,开发并部署数字体验. Edge Production Services. 其中一些功能在之前被称为"富兰克林"或"螺旋计划".
安装
安装 aem 作为全球指令。 你需要节点12.11或更新.
npm install -g @adobe/aem-cli
如果失败 File exists: /opt/homebrew/bin/hlx请 看这里。 。 。 .
快速启动
$ aem --help
Usage: aem <command> [options]
Commands:
aem up Run a AEM development server
aem import Run the AEM import server
aem content Manage local da.live content
Options:
--version Show version number [boolean]
--log-file, --logFile Log file (use "-" for stdout) [array] [default: "-"]
--log-level, --logLevel Log level
[string] [choices: "silly", "debug", "verbose", "info", "warn", "error"]
[default: "info"]
--tls-key, --tlsKey Path to .key file (for enabling TLS) [string]
--tls-cert, --tlsCert Path to .pem file (for enabling TLS) [string]
--help Show help [boolean]
use <command> --help to get command specific details.
for more information, find our manual at https://github.com/adobe/helix-cli
开始发展
$ cd <my-cool-project>
$ aem up
自动打开浏览器
这个 --open 参数选择路径, eg --open=/products/,将会使浏览器打开
在具体地点。 禁用为 --no-open'.
浏览器控制台日志转发
这个 --forward-browser-logs 旗帜允许将浏览器控制台信件(日志、错误、警告、信息)转发到终端。 这对调试客户端问题特别有用,无需打开浏览器的开发工具.
$ aem up --forward-browser-logs
启用时,浏览器控制台消息将以下列格式出现在您的终端中:
[Browser:error] 2025-07-27T10:30:45.123Z http://localhost:3000/script.js:42 Error message here
在以下情况下,这一特点特别有用:
- 在无头环境中调试 JavaScript 错误
- 监测开发期间客户方的行为
- 与需要在服务器和客户端日志中可见的 AI 编码助理合作
html 内容预览文件夹
这个 --html-folder 选项允许在没有扩展名的情况下服务 HTML 文件,用于在无法访问作者系统时预览内容变化.
$ aem up --html-folder drafts # serves at /drafts/*
$ aem up --html-folder html --html-mount / # serves at /* (root)
$ aem up --html-folder drafts --html-mount /preview # serves at /preview/*
使用 --html-mount 以控制文件服务的 URL 路径。 没有它,文件在 /FOLDER/*。 。 。 .
这使得有两个特点:
- 无扩展的 URL: 访问
/drafts/page(或/page用根挂载)服务于相应的.html文件 - 有元数据的普通 HTML创建
.plain.html自动被适当的 HTML 结构和元数据处理所包裹的文件
Plain HTML 文件 (. plance.html) 互联网档案馆的存檔,存档日期2013-12-02
Plain HTML 文件只包含主要内容和一个可选的元数据块. CLI 自动 :
- 环绕内容
<html><head><body><header><main><footer>结构 - 合并为
head.html内容 - 元数据块从已提供的内容中去除并转换为元标记
<head>。 。 。 .
当请求决定 <stem>,CLI抬头看 <stem>.html 先掉头 <stem>.plain.html。通过 --preferPlainHtml 来倒置此顺序 —— 当您同时保存两个文件并希望普通版本获胜时有用 :
$ aem up --html-folder drafts --preferPlainHtml
设置使用 https 的自签名证书
- 创建证书
$ openssl req -new -newkey rsa:4096 -x509 -sha256 -days 365 -nodes -out server.crt -keyout server.key -subj "/CN=localhost"
这将创建两个文件 : server.crt 财务报告和审定财务报表 server.key
或者,如果您的浏览器不信任证书,您可以使用 mkcert 生成信任的证书 :
# Install mkcert via Homebrew or your preferred method, then run:
mkcert -cert-file server.crt -key-file server.key localhost 127.0.0.1
- 以 tls 支持启动 aem
$ aem up --tls-cert server.crt --tls-key server.key
___ ________ ___ __ __ v14.26.1
/ | / ____/ |/ / _____(_)___ ___ __ __/ /___ _/ /_____ _____
/ /| | / __/ / /|_/ / / ___/ / __ `__ \/ / / / / __ `/ __/ __ \/ ___/
/ ___ |/ /___/ / / / (__ ) / / / / / / /_/ / / /_/ / /_/ /_/ / /
/_/ |_/_____/_/ /_/ /____/_/_/ /_/ /_/\__,_/_/\__,_/\__/\____/_/
info: Starting AEM dev server v14.26.1
info: Local AEM dev server up and running: https://localhost:3000/
- (可选) 将参数添加到.env文件 :
$ echo -e "AEM_TLS_CERT=server.crt\nAEM_TLS_KEY=server.key" >> .env
环境
所有命令参数也可以通过环境变量指定. 页:1 .env 文件为
自动装入 .
示例:
.env
AEM_OPEN=/products
AEM_PORT=8080
AEM_PAGES_URL=https://stage.myproject.com
HTTP 代理服务器
为了使用 HTTP 代理( 如公司防火墙 ) , 您可以设置相应的环境变量 :
NO_PROXY 是一个主机名列表(可选择带有端口)。 如果输入的 URL 匹配其中的任何条目 NO_PROXY,然后输入 URL 应通过直接请求获取(即没有代理).
匹配遵循以下规则: 1
NO_PROXY=* 禁用所有代理人.
空格和逗号可用于分隔 NO_PROXY 列表中选择一个选项.
若为 NO_PROXY 不包含任何条目,则代理从不禁用.
如果在主机名后添加一个端口,则端口必须匹配. 如果URL没有明确的端口名称,则使用协议的默认端口.
一般来说,只有在主机名与条目完全匹配时,代理机才会被禁用 NO_PROXY 列表中选择一个选项。 唯一的例外是以点开头或以通配符开头的条目;如果主机名以条目结尾,则代理机被禁用.
见test.js 关于什么应该匹配什么不匹配的例子.
*_PROXY
用于代理的环境变量取决于URL的协议. 譬如说, https://example.com (中文(简体) ) 使用“ https” 协议, 因此要使用的代理是 HTTPS_PROXY (无) HTTP_PROXY,仅用于http:-URLs).
如果现在, ALL_PROXY 如果没有其他匹配,则用作倒置.
全球
| 选项 | 变量 | 默认 | 说明 |
|---|---|---|---|
--log-file | AEM_LOG_FILE | - | 日志文件 。 使用情况 - 登录到 stdout |
--log-level | AEM_LOG_LEVEL | info | 日志级别 |
上调命令
| 选项 | 变量 | 默认 | 说明 |
|---|---|---|---|
--port | AEM_PORT | 3000 | 开发服务器端口 |
--addr | AEM_ADDR | 127.0.0.1 | 开发服务器绑定地址 |
--livereload | AEM_LIVERELOAD | true | 在浏览器中允许自动重新装入修改过的源 . |
--no-livereload | AEM_NO_LIVERELOAD | false | 禁用活装 . |
--forward-browser-logs | AEM_FORWARD_BROWSER_LOGS | false | 转发浏览器控制台日志到终端. |
--html-folder | AEM_HTML_FOLDER | 未定义 | 从文件夹中服务 HTML 文件而无需扩展 . |
--html-mount | AEM_HTML_MOUNT | /FOLDER | 提供html文件夹文件的 URL 路径 . |
--prefer-plain-html | AEM_PREFER_PLAIN_HTML | false | 偏爱 <stem>.plain.html 结束 <stem>.html 当两者都存在时. |
--open | AEM_OPEN | / | 服务器启动后在指定路径打开浏览器窗口 . |
--no-open | AEM_NO_OPEN | false | 禁用自动打开浏览器窗口 . |
--tls-key | AEM_TLS_KEY | 未定义 | .key文件路径( 用于启用 TLS) |
--tls-cert | AEM_TLS_CERT | 未定义 | .pem 文件路径( 用于启用 TLS) |
在 Git 工作树中,默认端口由分支名( 3000- 3999) 衍生为
减少工作树之间的冲突。 明确 --port 或者说 AEM_PORT 设置
(包括 .env(即使设定为 3000。 。 。 .
命令行选项优先于环境变量.
开始导入
AEM导入器是一个支持向AEM导入内容的应用程序.
$ cd <my-cool-project>
$ aem import
读取完整的 AEM 导入器 文档。 。 。 .
内容管理
这个 aem content 命令允许您从 da.live 本地查看内容,进行批量编辑,并推回更改。 当地内容存在于 content/ 文件夹.
| 命令 | 说明 |
|---|---|
aem content clone | Clone da.live 内容本地化为 content/ |
aem content status | 显示本地添加、 修改和删除的内容文件 |
aem content diff | 在本地和远程内容之间显示 diff |
aem content merge | 将远程内容合并到本地文件 |
aem content add | 阶段变化 content/ (比如说) git add(中文(简体) ) |
aem content commit | 在 content/ (比如说) git commit(中文(简体) ) |
aem content push | 执行 content/ 更改为 da.live(使用 content add 打开 content commit (第一个) |
服务本地内容
当a content/ 文件夹已存在, aem up 首先自动服务内容, 返回到本地找不到的文件的代理 。 HTML 文件在 content/ 包起来 head.html 并进行元数据块的处理,所以页面在从 da.live 服务时会以同样的方式制作.
发展AEM CLI
测试
你用得着 npm run check 运行测试并检查您的代码是否遵守
以 aem-cli 为编码样式.
浏览器可注入
浏览器注入的脚本(LiveReload and Controuplog servance)在单独的子项目中保存,地点是 packages/browser-injectables/。这种隔离使浏览器测试依赖性与主CLI分离.
发展
- 可注入脚本在
packages/browser-injectables/src/ - 不需要构建步骤 - 脚本直接使用
- 浏览器测试仅在可插入代码更改时运行
测试可注入浏览器
cd packages/browser-injectables
npm install
npm test
解决问题
aem up 失败 unable to get local issuer certificate
此错误发生在服务器证书不被Node.js信任时. 典型现象
原因是连接到服务器 *.aem.page 财务报告和审定财务报表 *.hlx.page 被拦截
由企业代理或防火墙 试图检查流量.
这些代理人使用私人证书机构在证书上签名 他们拦截的服务器。 要让Node.js信任服务器证书,需要添加 信任的 CA 列表中的 CA 证书.
备选案文1:使用IT提供的CA证书
CA证书一般由您的IT部门提供. 你可以问他们
cA 证书并保存到文件,例如. my-ca.crt。 。 。 .
那你可以用这个 NODE_EXTRA_CA_CERTS 创建 Node.js 信任的环境变量
cA 证书 :
export NODE_EXTRA_CA_CERTS=my-ca.crt
aem up
选项2:从浏览器提取证书
如果您无法从您的IT部门获取 CA 证书,可以直接提取 从您的浏览器中 :
- 访问浏览器中的 AEM 管理员 URL( 例如 ),
https://admin.hlx.page/sidekick/owner-name/repo-name/github-branch-name/config.json(中文(简体) ) - 点击地址栏中的挂锁图标查看证书细节
- 导出证书链为 Base64 编码
.pem文件 - 保存到目录( 例如 ),
certs/hlx.page.pem(中文(简体) ) - 设置环境变量并运行 aem :
export NODE_EXTRA_CA_CERTS=./certs/hlx.page.pem
aem up
在视窗上,使用 set 改为 export数字 :
set NODE_EXTRA_CA_CERTS=./certs/hlx.page.pem
aem up
这两种方法都会让Node.js信任服务器证书 aem up 应该工作.
npm install 失败 File exists: /opt/homebrew/bin/hlx
如果您尝试安装 @adobe/aem-cli数字 :
> npm install -g @adobe/aem-cli
...
npm error EEXIST: file already exists
npm error File exists: /opt/homebrew/bin/hlx
npm error Remove the existing file and try again, or run npm
当您先前将此工具安装在其旧软件包名下时, 可能会发生这种情况 @adobe/helix-cli (英语)。从15.0.0版本开始,这个工具被重新命名 aem 发表于 @adobe/aem-cli上一个 @adobe/helix-cli 已经贬值。 然而,新软件包仍以旧名提供命令行二进制 hlx 计外 aem,用于后向相容性,可导致npm安装出错.
要解决,首先解开旧版,再用新名再安装:
npm uninstall -g @adobe/helix-cli
npm install -g @adobe/aem-cli