Dev Diary: Symbolic links, .htmlhintrc

Imagine having two projects, separated from each other, and you want to share modules (folders). Unlike aliases, Gulp will watch for changes in symbolic links. Win!

Use the following to create a symbolic link.

ln -s /path/to/original/file/or/folder /path/to/new/file/or/folder

A Gulp Sass task concatenates all the CSS into .demo/styles.css. Gulp watch monitors that file. When using an alias, the Sass task did not see any changes. With symbolic links, it does. Woot!


After modifying HTMLHint and publishing to NPM I am now able to add support for camelCase HTML elements.

"id-unique": true,
"src-not-empty": false,
"alt-require": true,
"tagname-lowercase": ["altGlyph", "altGlyphDef", "altGlyphItem", "animateColor", "animateMotion", "animateTransform", "clipPath", "feBlend", "feColorMatrix", "feComponentTransfer", "feComposite", "feConvolveMatrix", "feDiffuseLighting", "feDisplacementMap", "feDistantLight", "feDropShadow", "feFlood", "feFuncA", "feFuncB", "feFuncG", "feFuncR", "feGaussianBlur", "feImage", "feMerge", "feMergeNode", "feMorphology", "feOffset", "fePointLight", "feSpecularLighting", "feSpotLight", "feTile", "feTurbulence", "foreignObject", "glyphRef", "linearGradient", "radialGradient"],
"attr-value-double-quotes": true,
"attr-lowercase": ["allowReorder", "attributeName", "attributeType", "autoReverse", "baseFrequency", "baseProfile", "calcMode", "clipPathUnits", "contentScriptType", "contentStyleType", "diffuseConstant", "edgeMode", "externalResourcesRequired", "filterRes", "filterUnits", "glyphRef", "gradientTransform", "gradientUnits", "kernelMatrix", "kernelUnitLength", "keyPoints", "keySplines", "keyTimes", "lengthAdjust", "limitingConeAngle", "markerHeight", "markerUnits", "markerWidth", "maskContentUnits", "maskUnits", "numOctaves", "pathLength", "patternContentUnits", "patternTransform", "patternUnits", "pointsAtX", "pointsAtY", "pointsAtZ", "preserveAlpha", "preserveAspectRatio", "primitiveUnits", "refX", "refY", "repeatCount", "repeatDur", "requiredExtensions", "requiredFeatures", "specularConstant", "specularExponent", "spreadMethod", "startOffset", "stdDeviation", "stitchTiles", "surfaceScale", "systemLanguage", "tableValues", "targetX", "targetY", "textLength", "viewBox", "viewTarget", "xChannelSelector", "yChannelSelector", "zoomAndPan"],
"attr-no-duplication": true,
"tag-pair": true,
"spec-char-escape": true,
"doctype-first": false,
"tag-self-close": false,
"title-require": false,
"attr-value-not-empty": false,
"id-class-ad-disabled": true

Disclaimer: The Dev Diary is written every day and previous articles are not updated. Code may work today but glitches will be found tomorrow. Do your due diligence and thoroughly test any code authored here before implementing into your own project. Good luck!

Show your support

Clapping shows how much you appreciated Aaron Kahlhamer’s story.