{"_id":"@akashacms/stacked-dirs","_rev":"6-32b00810480fdd7f01e200c04ce715c3","name":"@akashacms/stacked-dirs","dist-tags":{"latest":"0.9.0"},"versions":{"0.8.0":{"name":"@akashacms/stacked-dirs","version":"0.8.0","keywords":[],"author":{"name":"David Herron","email":"david@davidherron.com"},"license":"ISC","_id":"@akashacms/stacked-dirs@0.8.0","maintainers":[{"name":"reikiman","email":"david@davidherron.com"}],"bin":{"akashawatcher":"lib/cli.mjs"},"dist":{"shasum":"0782c0b767baa9ecbe9db82b6bea897c56f003fa","tarball":"https://registry.npmjs.org/@akashacms/stacked-dirs/-/stacked-dirs-0.8.0.tgz","fileCount":3,"integrity":"sha512-ZTwMtpEpZHMRcWGrKN/4o9+o9vVXGC4fOJyY+w/YUHWydddR5O24c7HOcTGGc2nu1ui99ahIm9hau+d6J8Ff6g==","signatures":[{"sig":"MEQCIErJsvv8El7SFskqfn1D8PY29p7RwdTxhD677+MXD+6fAiBljnl7KCcIeiA1jXyhWotEbC152kab2eG7+npGZHLXMg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":18826,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgzYi4CRA9TVsSAnZWagAAykwP/3M3VqHu4Y0GG8fL5X2O\nCzYEELnlB61mkF7frMeLFXyXs3v1mW4ODFsXpnS4EOeilrZDOCH9veekV36A\nxX8ppsMBcMhpwefLqOe9cpebMuzyrb97NNxb13WxdqYv317DPtI3Gi88UsfF\nhlt8xG3sdAi2bB/Jk76JJapGRtdBv4Wf+P4su+2EV6K+gT/jxPSKQ3+/HAGN\nOwQUSQ6A4RnBFfo0UxUsn1pqHmvyZqM4hLx7sEk4N7qbCgczffYydHKZ/mVA\nSTXszNi54wqTiYHXsaC2HN60gDGe3V0WBh9oqJz25TovsNoELwaO8xs2AwRC\n909gqJKbnn7Z20ZPp3X2s8BjUemnpIeeX1V9Z7gDgBvgeybWsMOL18zkiqQp\nz1ZTqYrrzLIt9uoVxFYzz2EfeipqIijW42lRld0n9OtYfbVaTW/eYbq7RLm5\n1kjczwQeoH+06G9rtrPXaYEGsWPZ73kWD/iE2Qf3iMoZpdOOMuyiPqnLhtpz\n3vlHbEe+G7y3Ke5FLLIIUU2gErtxDMybkaYk6sI7ArsDowMngz2Dn/7dcKhN\nxld2o4eDu+fZV8MGNAlb5yLjmHCZXYHGIm9lACcjoqv/KCx6JI+UaqMdfm3S\niVca/CB01sVkJzUuxueVXYggMYJ2P/tvjfzaeyfDnblUIvBz1YON27Ul/ESF\nrxg/\r\n=558q\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/watcher.mjs","gitHead":"fa32f7a49b0eb80614859f42d7f8fe4676273592","_npmUser":{"name":"reikiman","email":"david@davidherron.com"},"_npmVersion":"6.14.4","description":"In applications like static website generators, it is desired to include a dynamic builder/previewer/watcher mode to automatically rebuild the website every time a file changes.  When a new file is added, or if an existing file is changed, or if an existi","directories":{},"_nodeVersion":"14.15.4","dependencies":{"mime":"^2.4.6","js-yaml":"^4.1.0","chokidar":"^3.4.2","minimatch":"^3.0.4"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/stacked-dirs_0.8.0_1624082616413_0.4576077415982496","host":"s3://npm-registry-packages"}},"0.8.1":{"name":"@akashacms/stacked-dirs","version":"0.8.1","keywords":[],"author":{"name":"David Herron","email":"david@davidherron.com"},"license":"ISC","_id":"@akashacms/stacked-dirs@0.8.1","maintainers":[{"name":"reikiman","email":"david@davidherron.com"}],"dist":{"shasum":"d194de4571f0f8ab351c7b00eebc29755fc1e50d","tarball":"https://registry.npmjs.org/@akashacms/stacked-dirs/-/stacked-dirs-0.8.1.tgz","fileCount":3,"integrity":"sha512-PeFgYo5GGJJXVpcUqfLhHn7D6qNVxcobUX5cnOJlxYES58+NEgjIoBX08wb7hJBMjF53cPuJJ2n252im/9StMQ==","signatures":[{"sig":"MEYCIQCF5UjDx04t62EsBUJMgpsb9cSWxA/udHVc4mpB1i57zQIhALIoBrFtnar6eDbhT+4XYtWbLu4I5MegKsayLoRjqiHE","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":20258,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgzmhGCRA9TVsSAnZWagAAciUP/3TlZEudm68BMwFlX6KT\nGVke9Y6jwUB+Yf9BupNpoYcZ4ro8EuoFlhs7kGRIfeMCAbQknscdrUZiAh+F\npLfXuH7KFx5smHkP9VjrNVu2D24x7kv5N8SOKL1gZPVZAfLX2Il5K8M8XeAq\nLldDbzgx6JxYnDoHHUwVXlXoyEY0AvYpAwIxXVBM1gJJ4yTn30vAaUh+ck+H\ntTkXzucYJ9tTngjSVXwABzkfDzoZi2uG0CzxhUG3aEkNsrvrfhzcm6BnJUod\nSD8GwB+Cq6o7n0Eh4iPPJnnP6zG0vX8esODWNQ8qdlhPkmUqa4YdKRVMH2FK\nw7vvNGBUZe17U4jdugryJdnxFBjnIpq60meze4zlXngkx/uJ9Uf8GJuN35zU\nCsR9mgB7ry92CF2Of48k9tZB6tnO4uuFdLQQHg6jm+oUcaSTs4jRkfghqq3a\nmgjRcXlyt5OG1oPJFW1H2DQm4eeFWIEaV0eKhaXJicKCNHlnMKNw63pZlexj\ne87lht6LvGTIr8xhyouIVwkaJvgg/l2g/VLjgGOrKTtJy+BjomFLyeGsHflk\njFbx3Ai2yNWzsjrE7q2a7Ze2WHki7fjDGPppPlfODf1mVismXDN+r/fmZ/1Z\nxL/qi0rQgU/JqR49//Wl8Akmr3q49jAgwwST44X1VHBPhIO06iElcyyXKqkk\nwCeP\r\n=nssY\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/watcher.mjs","gitHead":"9499f3e5449396c17a85425827f9919bcc368a12","scripts":{"dopublish":"npm publish --access public"},"_npmUser":{"name":"reikiman","email":"david@davidherron.com"},"_npmVersion":"6.14.13","description":"In applications like static website generators, it is desired to include a dynamic builder/previewer/watcher mode to automatically rebuild the website every time a file changes.  When a new file is added, or if an existing file is changed, or if an existi","directories":{},"_nodeVersion":"14.17.0","dependencies":{"mime":"^2.4.6","chokidar":"^3.4.2","minimatch":"^3.0.4"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/stacked-dirs_0.8.1_1624139846177_0.9895756599249188","host":"s3://npm-registry-packages"}},"0.8.2":{"name":"@akashacms/stacked-dirs","version":"0.8.2","keywords":["static website generator","generator","watcher","watchFile","watching","cms","website"],"author":{"name":"David Herron","email":"david@davidherron.com"},"license":"ISC","_id":"@akashacms/stacked-dirs@0.8.2","maintainers":[{"name":"reikiman","email":"david@davidherron.com"}],"homepage":"https://akashacms.github.io/stacked-directories/","bugs":{"url":"https://github.com/akashacms/stacked-directories/issues"},"dist":{"shasum":"f0dad3bf69e62fdeede85fdb849f6d60ad5896c5","tarball":"https://registry.npmjs.org/@akashacms/stacked-dirs/-/stacked-dirs-0.8.2.tgz","fileCount":3,"integrity":"sha512-BVywvawXWoXp/WrVCyyrttvdHbsezZBlK2gG87P6jgii7vZySUSkSjMjsuUq6J3ZgaEZM6uLcNCgKRXw3nYqzQ==","signatures":[{"sig":"MEYCIQD0hOIqzdnr22XhBnk3RSo4BV74g+QmxNvFAfJQmQlJugIhAPenjC/sa1PDB3YJLyJuuqdyg/RAqkr3TlgKO3f8g9L9","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":20572,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgzotuCRA9TVsSAnZWagAA5A4P/ja0YUr6XIkkkhppV6al\ngEwbrk7Yq4nKSkPQxWctromj91nhr4FDydljSNXk3NxA3wsJ7q0omoZCR0vV\nxZDHVqLu6QLQHY4mXWI48jLxz3+hFktoxYLGj1Mhiq9E+4HZtsC8lMcpG2O+\nTOw5cmxg/hBeyQFAP+xAH8tB6lNp3mw9VxntTu9NodcmXcRTMfm9h3VaQZFg\n615w7McoWohJaaKVvjHQApTZ7OBoDWiCnVQAdSDIsJqER2K17T9POinbS2yI\nSFDqn+Gx65cg2TZXlvLdPv1C6sVF939tH/Z3K7f1v97nhYoZ3OxovE6TVI3p\nK7AiX1pGJreFgVqpIAzIvcfgOI0iTF64zQQ2xUDK1kiPHWXZSkWjaIQa2Zds\nSQTGNMMQWlpkSBv9iHAarKVhUlpTxmRXfbb8B93A6nJ9ARarYy65gcQ0XxgY\nHzJJkMnDsAP+l3j8mgQuVbXRqg6BAh+h4IyZcR/zXzZIM9Wdfkb8dqb3Yd0y\ncGzco+zrnG0l/tP54cVXbVDkE1QtMmyq6dAJ4Ipv0riRZ9kv/JifTsebhel/\n1Z3MGp+wP8d2XM3ZsnX03YhNnpHa39TzP5i8Em2JsV1Q5hRx3fxnVp+cWih2\nPDQNyqXLxO88cPIGlvPCpTISk7inHqmAvqLno5HDBJiBEcQbfzpaXWspl/RX\ncke3\r\n=mNy/\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/watcher.mjs","gitHead":"6a7bdd834b27b173fef0b5c1a819aadedfef7e78","scripts":{"dopublish":"npm publish --access public"},"_npmUser":{"name":"reikiman","email":"david@davidherron.com"},"_npmVersion":"6.14.13","description":"Automatically watch for changes in stacked directories","directories":{},"_nodeVersion":"14.17.0","dependencies":{"mime":"^2.4.6","chokidar":"^3.4.2","minimatch":"^3.0.4"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/stacked-dirs_0.8.2_1624148846159_0.19928578044489353","host":"s3://npm-registry-packages"}},"0.8.3":{"name":"@akashacms/stacked-dirs","version":"0.8.3","keywords":["static website generator","generator","watcher","watchFile","watching","cms","website"],"author":{"name":"David Herron","email":"david@davidherron.com"},"license":"ISC","_id":"@akashacms/stacked-dirs@0.8.3","maintainers":[{"name":"reikiman","email":"david@davidherron.com"}],"homepage":"https://akashacms.github.io/stacked-directories/","bugs":{"url":"https://github.com/akashacms/stacked-directories/issues"},"dist":{"shasum":"3bea6d663c05f2bbfb1c093ef7c569570bac6bb1","tarball":"https://registry.npmjs.org/@akashacms/stacked-dirs/-/stacked-dirs-0.8.3.tgz","fileCount":13,"integrity":"sha512-QgtAxpX8wLeX+MmSbQKA75tBF3+wRbjbq+Hkr45MC58f/SgHnO7d5BdenSOBlqN57LGYGTz86RCvqP55fGPUWw==","signatures":[{"sig":"MEUCIA0TFJEeMb4qqwtrqZt7c8v7R2NywQENOlSNrA4eTjmNAiEA4j5quWYSdytHCujeb6+THgblefOLbmYHV6oyhjCaFeE=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":108716},"main":"./dist/watcher.js","type":"commonjs","types":"./dist/watcher.d.ts","exports":{"import":"./esm/watcher.mjs","require":"./dist/watcher.js"},"gitHead":"01ef935dba65e9be4c46894e4a6a8b031641c3b0","scripts":{"build":"npx tsc","watch":"tsc --watch","eslint":"npx eslint lib","monitor":"nodemon --watch dist --watch test --exec 'cd test && npm run test'","dopublish":"npm publish --access public"},"_npmUser":{"name":"reikiman","email":"david@davidherron.com"},"_npmVersion":"10.5.0","description":"Automatically watch for changes in stacked directories","directories":{},"_nodeVersion":"20.12.2","dependencies":{"mime":"^3.x","fastq":"^1.13.x","chokidar":"^3.5.x","minimatch":"^3.x"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^8.7.0","nodemon":"^2.0.15","typescript":"^4.5.5","@types/mime":"^2.0.3","@types/node":"^17.0.10","@types/minimatch":"^3.0.5","@typescript-eslint/parser":"^5.10.1","@typescript-eslint/eslint-plugin":"^5.10.1"},"_npmOperationalInternal":{"tmp":"tmp/stacked-dirs_0.8.3_1716986581508_0.3362789282968701","host":"s3://npm-registry-packages"}},"0.8.4":{"name":"@akashacms/stacked-dirs","version":"0.8.4","keywords":["static website generator","generator","watcher","watchFile","watching","cms","website"],"author":{"name":"David Herron","email":"david@davidherron.com"},"license":"ISC","_id":"@akashacms/stacked-dirs@0.8.4","maintainers":[{"name":"reikiman","email":"david@davidherron.com"}],"homepage":"https://akashacms.github.io/stacked-directories/","bugs":{"url":"https://github.com/akashacms/stacked-directories/issues"},"dist":{"shasum":"0566b475896c03378bff05a1b3c89fe9d84b980a","tarball":"https://registry.npmjs.org/@akashacms/stacked-dirs/-/stacked-dirs-0.8.4.tgz","fileCount":14,"integrity":"sha512-oZn7oC8t3DMJfVaAEvGRM7woTFxDolvN2wD0eRy4FDkrnr1mKgzlm5Ek/vqazsMEeR9DcZ16ys/QaSRj/Ve/qg==","signatures":[{"sig":"MEUCIFZRYNRrEgdBXzsogAj82bm7SAbrkLsdH5avyUYaQ/HnAiEAt1Hvr2icqD+eVqiPf8M6P6DSOlrXpuTYfTFk5DQDeX0=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":123977},"main":"./dist/watcher.js","type":"module","types":"./dist/watcher.d.ts","gitHead":"efe060e537e9ded8bfb2a72e5362cff2174d70d6","scripts":{"build":"npx tsc","watch":"tsc --watch","eslint":"npx eslint lib","monitor":"nodemon --watch dist --watch test --exec 'cd test && npm run test'","dopublish":"npm publish --access public"},"_npmUser":{"name":"reikiman","email":"david@davidherron.com"},"_npmVersion":"10.9.0","description":"Automatically watch for changes in stacked directories","directories":{},"_nodeVersion":"22.11.0","dependencies":{"mime":"^4.x","fastq":"^1.17.x","chokidar":"^4.0.x","minimatch":"^10.x"},"_hasShrinkwrap":false,"devDependencies":{"nodemon":"^3.1.x","typescript":"^5.6.x","@types/node":"^22.x","@types/minimatch":"^5.x"},"_npmOperationalInternal":{"tmp":"tmp/stacked-dirs_0.8.4_1731844685319_0.31337217958619124","host":"s3://npm-registry-packages"}},"0.9.0":{"name":"@akashacms/stacked-dirs","version":"0.9.0","description":"Automatically watch for changes in stacked directories","bugs":{"url":"https://github.com/akashacms/stacked-directories/issues"},"homepage":"https://akashacms.github.io/stacked-directories/","main":"./dist/watcher.js","types":"./dist/watcher.d.ts","type":"module","scripts":{"build":"npx tsc","watch":"tsc --watch","monitor":"nodemon --watch dist --watch test --exec 'cd test && npm run test'","eslint":"npx eslint lib","dopublish":"npm publish --access public"},"keywords":["static website generator","generator","watcher","watchFile","watching","cms","website","chokidar"],"author":{"name":"David Herron","email":"david@davidherron.com"},"license":"ISC","dependencies":{"chokidar":"^4.0.x","micromatch":"^4.0.8","mime":"^4.x"},"devDependencies":{"@types/minimatch":"^5.x","@types/node":"^22.x","nodemon":"^3.1.x","typescript":"^5.6.x"},"_id":"@akashacms/stacked-dirs@0.9.0","gitHead":"5874f66a9b76274be845806cfa116aab0f5c3669","_nodeVersion":"23.3.0","_npmVersion":"10.9.0","dist":{"integrity":"sha512-UBTuQvUnbYlL+zLgp/QfHCK6qX4Yi0dKcw5i3MAvoAyMLH/XsgeZgxsa0XemUQbXQOkeoIBJvG/wXQFRQRLrog==","shasum":"9a8412bd5bcc60d8ac3a74a7bba93e51e69b252a","tarball":"https://registry.npmjs.org/@akashacms/stacked-dirs/-/stacked-dirs-0.9.0.tgz","fileCount":13,"unpackedSize":123437,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIE/IUpiZ+WJEdigLah5qSfY/xvASFdyww9EM2xYE2ewwAiEApU4KtU0xLuNrgwjEA42Y92SJ4EULKQmPPTt0KP60B3k="}]},"_npmUser":{"name":"reikiman","email":"david@davidherron.com"},"directories":{},"maintainers":[{"name":"reikiman","email":"david@davidherron.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/stacked-dirs_0.9.0_1735053499104_0.6660498743031984"},"_hasShrinkwrap":false}},"time":{"created":"2021-06-19T06:03:36.207Z","modified":"2024-12-24T15:18:19.510Z","0.8.0":"2021-06-19T06:03:36.539Z","0.8.1":"2021-06-19T21:57:26.285Z","0.8.2":"2021-06-20T00:27:26.276Z","0.8.3":"2024-05-29T12:43:01.722Z","0.8.4":"2024-11-17T11:58:05.489Z","0.9.0":"2024-12-24T15:18:19.323Z"},"bugs":{"url":"https://github.com/akashacms/stacked-directories/issues"},"author":{"name":"David Herron","email":"david@davidherron.com"},"license":"ISC","homepage":"https://akashacms.github.io/stacked-directories/","keywords":["static website generator","generator","watcher","watchFile","watching","cms","website","chokidar"],"description":"Automatically watch for changes in stacked directories","maintainers":[{"name":"reikiman","email":"david@davidherron.com"}],"readme":"# Automatically watch for changes in stacked directories\n\nIn applications like static website generators, it is desired to include a dynamic builder/previewer/watcher mode to automatically rebuild the website every time a file changes.  When a new file is added, or if an existing file is changed, or if an existing file is deleted (unlinked), some or all of the website must be rebuilt.  Then for full enjoyment, once the rebuild finishes a web browser tab can be automatically reloaded.  That way an author can be editing their file, type COMMAND-S to save the file, and automatically a good quality preview shows up in a web browser.\n\nThe `@akashacms/stacked-dirs` package was created to serve that purpose within the AkashaCMS ecosystem.  This package was designed to independent enough to be used by any other package, because there is no dependency on the rest of AkashaCMS.\n\nThe concept of _Stacked Directories_ comes from AkashaCMS.  For each type of file used in a website project -- documents, assets, layout templates, other templates -- we probably want to **assemble those files from multiple sources**, and we might want one source to be used in one directory path, another in another path, and so on.\n\nFor example _Assets_ are a kind of file that in AkashaCMS are simply copied (no modification) into the output directory.  The website might use several JavaScript libraries, like Bootstrap and jPopper, each of which come from separate _npm_ packages.  Hence you'll end up using these sets of files\n\n* `node_modules/bootstrap/dist` would be used at `/vendor/bootstrap`\n* `node_modules/bootstrap-icons` would be used at `/vendor/bootstrap-icons`\n* `node_modules/popper.js/dist` would be used at `/vendor/popperjs`\n\nThat's simple enough, we're copying files from several directories into corresponding specific directories in the rendered output directory.  What's the big deal?  Wait, that's not all _Stacked Directories_ does.\n\nAnother feature is **overriding the files in a directory stack**.  To understand consider a different scenario, namely the templates.  Your static website generator could have several modules for adding functionality.  For example one module could implement blogging functionality, and among the templates it supplies is one for constructing _River of News_ displays.  Another module could be a theme, and it could override the template for _River of News_ display.  And your website could have its own customized _River of News_ template.\n\nWith _Stacked Directories_, the template directory from each plugin module is added to the templates directory stack.  When looking for a specific template, the first instance found in the directory stack is what's used.\n\nThe final feature is that _Stacked Directories_ **automatically watches for updates to every directory**, and emits _add_, _change_ and _unlink_ events as appropriate.  It also accounts for all the concerns named with the other two features.\n\nWith _Stacked Directories_ you have a leg up on building your own static website generator.  To prove this, the [source code repository](https://github.com/akashacms/stacked-directories) includes an example extremely simplified static website generator.\n","readmeFilename":"README.md"}