app-versioner
Versioning helper for static assets. Useful for adding versioning (eg dist/1-0-4/css/main.css
) to your output to make browser cache busting and version tracking easier.
Example usage
Configure SCSS variables for build path and environment in _vars.scss
before you do a Sass build.
const AppVersioner = require('app-versioner').AppVersioner;
const IS_PROD = process.env.NODE_ENV === "production";
var appVersioner = new AppVersioner("/dev-environment/", "/prod-environment/", IS_PROD);
appVersioner.setScssBuildPath("app/scss/_vars.scss"); // $build-path: "/dev-environment/1-0-1/";
appVersioner.setScssEnv("app/scss/_vars.scss"); // $environment: "dev";
If you don't wish to include the versioning in the scss variable (maybe your dev environment doesn't really need it), you can pass false
in 2nd parameter
appVersioner.setScssBuildPath("app/scss/_vars.scss", false); // $build-path: "/dev-environment/";
You can get the versioned path for your sass build like this ("bld" is short for "build directory" and accepts an string parameter)
var cssDir = appVersioner.bld("css");
If you need more control, you can choose to include the versioned folder or not like this
var includeVersioning = process.env.NODE_ENV === "production";
var cssDir = appVersioner.getBuildPath(includeVersioning) + "css"; // "/dev-environment/1-0-1/css/"
Or copy files after your production or development versioned folder like this
appVersioner.copyToBuildPath("app.css");
Or copy entire folders (pass true to 2nd parameter if you want to include the last folder - in this example "/js/" would be included in the output)
appVersioner.copyToBuildPath("dist/js/", true);