Select one of the manuals below:
You can use atscm to update atscm ๐
Simply run atscm update
to install the latest version available. Add the --beta
flag to install prerelease versions. Ensure to backup your project before doing so.
Internally, we use npm to install updates, which means that you can also run
npm install --save-dev atscm
instead.
We'll do our best to follow semantic versioning, which means you shouldn't need to update your project sourc
tl;dr: Jump to the tutorial-custom-transformer repository to see the results.
In this document we'll guide you through the steps necessary to implement a custom Transformer. Our transformer will use Babel to transpile ES2015/ES6 JavaScript to plain ES5 JavaScript that works in all Browsers.
Custom transformers provide an easy way to extend the build functionality of atscm. Basically, a transformer implements two behaviours: How atvise server nodes are ma
Note that rename files are not available for atscm < v1.0.0. Use
atscm update
to use the latest version
Let's assume we have two atvise server nodes, AGENT.OBJECT.conflictingnode and AGENT.OBJECT.ConflictingNode. These are valid node ids on the server, but when stored to the (case-insensitive) filesystem, the behaviour is undefined.
When atscm discovers such a name conflict it creates a rename file at ./atscm/rename.json
. This file will con
Please note: This guide assumes you have a basic knowledge on how gulp.js and custom atscm transformers work. You may go through gulp's getting started guide or the custom transformer tutorial first otherwise.
atscm heavily relies on the gulp.js build tool. Therefore it's pretty easy to integrate existing gulp plugins into atscm transformers.
Basically, the only Transformer method you have to override is Transformer#applyToStream. In there,
atscm can be easily debugged using Google Chrome's developer tools. All you have to do to attach the debugger, is to start the command line interface with the --inspect
or --inspect-brk
flag. For this to work you must first find the path to atscm-cli's executable:
which atscm
Note: This only works on Linux and macOS only
You can now use this executable directly and run it with the inspector flags, e.g.:
node --inspect-brk "$(which atscm)" [arguments passed to atscm]
When a throwing an Error that was caused by client code, you should provide location info so it can be traced back to the source code.
To do so, simply add additional properties to the error object, containing the source code, the start location and (optionally) the end location.
function myTransformCode() {
const sourceCode = 'the code transformed';
try {
// Do something that may throw an error...
} catch (error) {
Object.assign(error,
Learn how to use the atscm API to e.g. run server serverscripts in your node application. Available since atscm v1.0.0. Use
atscm update
to use the latest version
First of all, make sure your project has atscm installed: Take a look at your package.json file and make sure, atscm is present in the dependencies or (depending on your use case) devDependencies section. Otherwise, install atscm if necessary:
# If you need atscm as a runtime-dependency
npm install --s
atscm uses both unit and integration tests. Mocha is used as a test runner and nyc for test coverage reports.
Test scripts:
Command | Description |
---|---|
npm run test | Run all tests |
npm run test:unit | Run all unit tests |
npm run test:integration | Run all integration tests |
npm run test:watch | Re-run all tests when files change |
npm run test:coverage | Check test coverage |
The unit tests are located inside ./test/src
. Test files are named after the module they test,
We would love for you to contribute to atSCM. As a contributor, here are the guidelines we would like you to follow:
If you find a bug in the source code, you can help us by submitting an issue to this repository. Even better, you can submit a Pull Request with a fix.
You can request a new feature by submitting an issue to this repository. If you would like to implement a new feature, please submit an issue with a proposal for your work first, to be sure