Getting Started
Installation
Install via npm:
Global Install
Install globally to use nsc directly:
npm install -g noshift.js@latest Local Install
Install as a dev dependency and use via npx:
npm install -D noshift.js@latest Create a Project
Scaffold a new NoShift.js project:
# Global
nsc create my-project
# Local
npx nsc create my-project This creates a project directory with nsjsconfig.json, src/ folder, and installs dependencies.
Configuration
The project config file nsjsconfig.json controls compiler options:
{
"compileroptions": {
"rootdir": "src",
"outdir": "dist",
"warnuppercase": true,
"capitalizeinstrings": true
}
} - rootdir Source file directory (default:
src) - outdir Output directory (default:
dist) - warnuppercase Warn about uppercase characters in source code (default:
true) - capitalizeinstrings Enable
^3capitalize modifier inside string literals (default:true)
Compile & Run
Compile all .nsjs files:
nsc With local install, prefix commands with npx:
npx nsc Or run a file directly without compiling:
# Global
nsc run src/index.nsjs
# Local
npx nsc run src/index.nsjs File Extension
NoShift.js files use the .nsjs extension. Files prefixed with _ (e.g. _helper.nsjs) are ignored by the compiler.
Programmatic API
You can also use NoShift.js as a library in your code.
ESM
import { compile } from "noshift.js";
const result = compile('console.log^8^2^3hello^2^9;');
console.log(result.outputText);
// => console.log("Hello"); CJS
const { compile } = require("noshift.js");
const result = compile('console.log^8^2^3hello^2^9;');
console.log(result.outputText);
// => console.log("Hello"); Options
Pass options as the second argument:
const result = compile(source, {
capitalizeInStrings: false, // Disable ^3 inside strings
}); Syntax Diagnostics
Use diagnose() to check for syntax errors before compiling:
import { diagnose } from "noshift.js";
const errors = diagnose(source);
if (errors.length > 0) {
for (const e of errors) {
console.error(`Line ${e.line}:${e.column} - ${e.message}`);
}
}