Adobe AEM Synchronization Tool
npm install aemsync-weilyaemsync
=======
AEM (Adobe CQ) Synchronization Tool.
npm install aemsync -g
`
$3
Commandline
`
aemsync -t targets -w path_to_watch
-t: Comma separated list of target hosts; default is http://admin:admin@localhost:4502.
-w: Folder to watch; default is current.
-i: Update interval; default is 300ms.
-e: Anymatch exclude filter; any file matching the pattern will be skipped.
-d: Enable debug mode.
`
`
aemsync -t http://admin:admin@localhost:4502,http://admin:admin@localhost:4503 -w ~/workspace/my_project
`
JavaScript
`JavaScript
// Import aemsync.
const aemsync = require('aemsync')
// Set up the environment.
let workingDir = '~/workspace/my_project'
let targets = [
'http://admin:admin@localhost:4502',
'http://admin:admin@localhost:4503'
]
let exclude = '*/.orig' // Skip merge files.
let pushInterval = 300
let onPushEnd = (err, host) => {
if (err) {
return console.log(Error when pushing package to ${host}., err)
}
console.log(Package pushed to ${host}.)
}
// Create Pusher and Watcher.
let pusher = new Pusher(targets, pushInterval, onPushEnd)
let watcher = new Watcher()
// Initialize queue processing.
pusher.start()
// Watch over workingDir.
watcher.watch(workingDir, exclude, (localPath) => {
// Add item to Pusher's queue when a change is detected.
pusher.addItem(localPath)
})
`
$3
The Watcher uses Node's fs.watch() function to watch over directory changes recursively. For Windows and OSX the recursive option is used, which significantly improves the performance. Any changes inside jcr_root/* folders are detected and deployed to AEM instance(s) as a package.
Update interval is the time the Pusher waits for file changes before the package is created. In case of multiple file changes (e.g. switching between code branches), creating a new package per file should be avoided and instead, all changes should be pushed in one go. Lowering the value decreases the delay for a single file change but may increase the delay for multiple file changes. If you are unsure, please leave the default value.
$3
Packages are installed using package manager service (/crx/packmgr/service.jsp), which takes some time to initialize after AEM startup. If the push happens before, the Sling Post Servlet will take over causing the /crx/packmgr/service.jsp/file` node to be added to the repository.