{"_id":"@davestewart/outliner","_rev":"6-c870969b2ca397f4d1484b4f853da81c","name":"@davestewart/outliner","dist-tags":{"latest":"1.2.0"},"versions":{"1.0.0":{"name":"@davestewart/outliner","version":"1.0.0","description":"A node package to outline SVG strokes as fills","main":"index.js","bin":{"outliner":"bin/index.js"},"scripts":{"demo":"node main.js demo/source demo/target --autosize","dev":"nodemon main.js demo/source demo/target --autosize","test":"node tests/index.js","publish":"npm publish --access public"},"author":{"name":"Dave Stewart"},"license":"ISC","dependencies":{"cheerio":"^1.0.0-rc.10","chokidar":"^3.5.2","cli-table3":"^0.6.0","colors":"^1.4.0","left-pad":"^1.3.0","makerjs":"^0.17.1","yargs":"^17.1.1"},"devDependencies":{"nodemon":"^2.0.12"},"gitHead":"0a09b8f57938d1da65e52a549d375abae64f1f26","_id":"@davestewart/outliner@1.0.0","_nodeVersion":"12.21.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-2BFHEY3GBVu7i6Stn/nBZ+F0st+zwc6RtwLYpYuuO3xNbhRPMaO385fHI6CNMgV3UGITMDa/gUrDcC933TbnZg==","shasum":"0fa9f44022f8f5c523de350d74afa300315819c6","tarball":"https://registry.npmjs.org/@davestewart/outliner/-/outliner-1.0.0.tgz","fileCount":12,"unpackedSize":20077,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhQ+ZJCRA9TVsSAnZWagAAb5cP/jcfGQEeOB5BSlGyF1+r\n3GtKGy2v8lqz7+JjZiRQ69Jsq/O8PJZpwWPO80lzeI/s1FLpduixPmK5/9tD\n0EFcD/724uD/3YzsvFlYA6lizqY3bN9sCxszBYawna2j7hqafGNJH0wJH3Qn\n02L+PW7Vwn0muonI/+Sm/AiL8RIaxQmmkpSjgGPELuVJ7s508Jcj3+QyVSDL\n56qaDL1Ph4i9cfAI9V8lj29pTT/aWGSSwAeGctP9IAeipp7mcyYqhiPfbmjc\nvIXA9AmugdVyykpHeojnJHJaqMLGWzRF0MMJJz6+BoAPVf/0TTjDPkbMlTKC\njPevAd70qHtl0AacD/E9lfPizlC8I6FzDuaZbYsrLnDewFiEAlbIc+LaDGtM\nXUlJgnCQ3Ycikmz8DaqxplM0qp9Cfrj1dV2woJ4XzDbtsWXerVnJEX30kn/d\nrmKeNjOSuVMQf/Yg1bdNJQDJHtrQkwiAt4zkistoffbFopuVI0/r1bNiHRZx\nGLWLBfXAbnk8M/NQwBWYk/duhK4a9QuaGaOx5w5vyi+7wzc5j6SwkAYmD2pk\npZZDVilCGaBJugo0ksW2HGD6U0wAd2oS6y0KdzLLCfaseLT6/kX9Hj4kCstZ\nNqLVehEEDEQSb3vg3W2PurlzH/y36VJCZ2M0dFy6pAbfRyOiMZQvzkl35WAB\n/OND\r\n=0kze\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDQW4/NO33Hhue7sNThdSueFKX5J8MkVQknt20wDCnGggIhAPFngRsty+ATq6tDAU/VOzUS++fEa5/VmPk+sWx7iTQ9"}]},"_npmUser":{"name":"davestewart","email":"dev@davestewart.co.uk"},"directories":{},"maintainers":[{"name":"davestewart","email":"dev@davestewart.co.uk"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/outliner_1.0.0_1631839817610_0.4662432223231865"},"_hasShrinkwrap":false},"1.0.1":{"name":"@davestewart/outliner","version":"1.0.1","description":"A node package to outline SVG strokes as fills","main":"index.js","bin":{"outliner":"bin/index.js"},"scripts":{"demo":"node main.js demo/source demo/target --autosize","dev":"nodemon main.js demo/source demo/target --autosize","test":"node tests/index.js","publish":"npm publish --access public"},"author":{"name":"Dave Stewart"},"license":"ISC","dependencies":{"cheerio":"^1.0.0-rc.10","chokidar":"^3.5.2","cli-table3":"^0.6.0","colors":"^1.4.0","left-pad":"^1.3.0","makerjs":"^0.17.1","yargs":"^17.1.1"},"devDependencies":{"nodemon":"^2.0.12"},"gitHead":"ecd707dd164d50626b7e206178f65c917e85bc79","_id":"@davestewart/outliner@1.0.1","_nodeVersion":"12.21.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-ybRZMhQY/WX60qw9nySDwVC9Ij5e/inbUtsJ0i9YLiAaSoCccEtCGe94iu10CFqscNmDPb81YY6ljgrQ402wDg==","shasum":"54294815cfba2fcd3f93c45b5ccba461ea19f4dd","tarball":"https://registry.npmjs.org/@davestewart/outliner/-/outliner-1.0.1.tgz","fileCount":12,"unpackedSize":20117,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhQ+5VCRA9TVsSAnZWagAAcusP/121hHN8/WkfY1gKEiXx\nxsg6bqOW85CHPgoaXCgl+GIFa854MenkaaSGZsQfZmJrJRFaQqnSWvg0hj6b\nhObn8kkJmzWHPbTNETLrUI0vBXxfuVdT8oWBhLWoC64ABifppKUDEUzc9kWO\n6G8EXj9wNDOlO263aVC80/BrUpYdUKADBm8+bT/1vxfLbr4OZYbO6DJA1JNw\nONj1E/WwqGa/KnjVdE1YW9l9qnBdGIIlcGqa4URiBPnBXQCkps80d+ACwidC\nnvuB0I8TDtf8RtCWK5s5MT31kNunp9NZQLkDp8vrVX+Hj69KkeAtp24gg65/\nNvo9b/LjKMJh8yp1evw/5GuTnVDXKDlLOWbawCzna6MzxMHMYugFHvpn5Ja0\nwa1hXGr2oejWvPArxRgs3wDUvaFrIDeWOw0J0Ei8p5I4AecSDPZfQlqNReQE\ncd86o8JmcBY+Fcl2b4TQ2bNmZbbUhDyB0frWvbIpw6TRG3jsNJ1EvDdzkZgB\nRjkqrOZTOJGlKEekJGAHDygDDAOR4V7TcnyMPuYBxUToLNj+cdbjxDBfmD0V\nWzKhxSoHHjdizUnLAjnPP+5E+fxYKWnrUZezyH1tYAvjV7Q+Oc2ZMk6RES71\n9tiqGLobbChE9ge+SKluhtwFBmdhxZ0lR21xWNNsK0NJLT2pwBNgrp7RH+eN\nDpr+\r\n=Fnrf\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFWsfgHnwpfUJhjoijcc8M6iT6jkoLmdp1AcHn7iGB0eAiEAxSMzs1YqwZ81YupeCnH9tgQ1VpTn/YF+Xm7wxx+Nisw="}]},"_npmUser":{"name":"davestewart","email":"dev@davestewart.co.uk"},"directories":{},"maintainers":[{"name":"davestewart","email":"dev@davestewart.co.uk"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/outliner_1.0.1_1631841877735_0.9332402723103681"},"_hasShrinkwrap":false},"1.1.0":{"name":"@davestewart/outliner","version":"1.1.0","description":"A node package to outline SVG strokes as fills","main":"src/index.js","bin":{"outliner":"bin/index.js"},"scripts":{"demo":"node main.js demo/source demo/target --autosize","dev":"nodemon main.js demo/source demo/target --autosize","test":"node tests/index.js","publish":"npm publish --access public"},"author":{"name":"Dave Stewart"},"license":"ISC","dependencies":{"cheerio":"^1.0.0-rc.10","chokidar":"^3.5.2","cli-table3":"^0.6.0","colors":"^1.4.0","left-pad":"^1.3.0","makerjs":"^0.17.1","yargs":"^17.1.1"},"devDependencies":{"nodemon":"^2.0.12"},"gitHead":"52f0b64c1a5291b9af1d65fe7a6a201fb2f0ab99","_id":"@davestewart/outliner@1.1.0","_nodeVersion":"12.21.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-yqp0mxbXDgKTmpmKU4UJmN3LeRzjjaN76D+Lurq5PZoEjkNlcXy70i8y24iiTF7XlyuAbvXdHdONQfUA+cbHBQ==","shasum":"54d5ea3bd1e7523f529d62d8c6c18ec9aa9aeebc","tarball":"https://registry.npmjs.org/@davestewart/outliner/-/outliner-1.1.0.tgz","fileCount":13,"unpackedSize":22760,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGrwSmxlGHLC3zkkoUTDWwfT3kSsJlJmE5yHwyLFof7sAiEAvJ7tU9AkDsTQf5jJlqV14JGr+f2qI7HLQPkb+L/pG58="}]},"_npmUser":{"name":"davestewart","email":"dev@davestewart.co.uk"},"directories":{},"maintainers":[{"name":"davestewart","email":"dev@davestewart.co.uk"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/outliner_1.1.0_1631874338976_0.8043015539550926"},"_hasShrinkwrap":false},"1.1.1":{"name":"@davestewart/outliner","version":"1.1.1","description":"A node package to outline SVG strokes as fills","main":"src/index.js","bin":{"outliner":"bin/index.js"},"scripts":{"demo":"node main.js demo/source demo/target --autosize","dev":"nodemon main.js demo/source demo/target --autosize","test":"node tests/index.js","publish":"npm publish --access public"},"author":{"name":"Dave Stewart"},"license":"ISC","dependencies":{"cheerio":"^1.0.0-rc.10","chokidar":"^3.5.2","cli-table3":"^0.6.0","colors":"^1.4.0","left-pad":"^1.3.0","makerjs":"^0.17.1","yargs":"^17.1.1"},"devDependencies":{"nodemon":"^2.0.12"},"gitHead":"6b7c23fdf1a4c7a09b323f0483c035bba15fcbce","_id":"@davestewart/outliner@1.1.1","_nodeVersion":"12.21.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-DpjsquwU4xaU9hXWQQdL6VBfzjjXnes/6/Xg3AP3ucBzatX9cisu5by/5qLVKXHvYQQCRkorHkm1CxSJbEPSoQ==","shasum":"f83d883ea8bf48bc4203f5a3dbc737bd16d9d3ef","tarball":"https://registry.npmjs.org/@davestewart/outliner/-/outliner-1.1.1.tgz","fileCount":13,"unpackedSize":22927,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDH9vuCuVC13zVmH9afYJ7gyk1SScAvqNrvewtB8I2M1AIhAP2jayp+KlkjHMlXgD9AnsAfnlSjk9mvIBI6RUwC37W5"}]},"_npmUser":{"name":"davestewart","email":"dev@davestewart.co.uk"},"directories":{},"maintainers":[{"name":"davestewart","email":"dev@davestewart.co.uk"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/outliner_1.1.1_1631878853465_0.9764687126325713"},"_hasShrinkwrap":false},"1.2.0":{"name":"@davestewart/outliner","version":"1.2.0","description":"A node package to outline SVG strokes as fills","main":"src/index.js","bin":{"outliner":"bin/index.js"},"scripts":{"demo":"node main.js demo/source demo/target","dev":"nodemon main.js demo/source demo/target","dev:autosize":"nodemon main.js demo/source demo/target --autosize","dev:source":"nodemon main.js demo/source","dev:absolute":"nodemon main.js /Users/Dave/Desktop/svgs/src /Users/Dave/Desktop/svgs/trg","test":"node tests/index.js","publish":"npm publish --access public"},"author":{"name":"Dave Stewart"},"license":"ISC","dependencies":{"cheerio":"^1.0.0-rc.10","chokidar":"^3.5.2","cli-table3":"^0.6.0","colors":"^1.4.0","left-pad":"^1.3.0","makerjs":"^0.17.1","yargs":"^17.1.1"},"devDependencies":{"nodemon":"^2.0.12"},"gitHead":"0e31489b6e06a686f29158793f70845ed5c8e264","_id":"@davestewart/outliner@1.2.0","_nodeVersion":"12.21.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-x9cz5u1629DQTf6TC2my9ArCB/9TToZnER9HuaT8QzqHh/2DKsh9VlOsoa6MXqLNXhLItV2ls3x7MKROaLa83A==","shasum":"d3cec7a26b9df345950ffaaa6db16496e30e1b5b","tarball":"https://registry.npmjs.org/@davestewart/outliner/-/outliner-1.2.0.tgz","fileCount":13,"unpackedSize":24780,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhzsi3CRA9TVsSAnZWagAA0ccP/iRjmOk9Q2A9hi8mb+/E\nFHk5MvE+0Bns3Ac7DgQqRDYQZ0K6VvMK1PjhuXLuVxAHuTNsRIGxms/hnHcf\neqBWKspDT6nkfPEDQ5HGjh5ABehvxynwrujRgdEsXux8SEW1TqImuFkchkzN\nmihwQ2YHDchUD97ZcfdD8icaJmjb6xle0cru29eUWpRIbE7fdpWyM0h5bisl\n5PrBYEH3Zku5N3G1LuY8p2x0QSqvgTgQ7a7j8OckRX1p8+o6IWDu3XSc0O1V\nXny2kV9D7X3s/CljS6yvSKVbHyDADYufWc0c9WTw4UCqeWJA4QvF/y1O9y3N\nus/mO8SpKG6owPJkF79TP82y2DBp2pd2R7rVgZ5OPorfkUUO6mxecTfTzBwL\nGTUzFMdQPv8fouT9166rPI55t39moJTtdNWkVo8ulkJy4fE1KTF82ernJ/Qn\npOrDcojyE5MvvnSG44t+DxsQs5EYMYdGDfyDjgnz7v4F3KyhQUrHRKJI0jci\n+GQEYfDluCAH0+jjwR11YOqrB0H3sP6USpKWQ5bTTq3nO3rR/+QH1bGXNgdv\nHKml1mEiGbFxNqyaWamC9fkXuveZlKrluV5EPW57tAsPE2nZjKlKDSc4I2VQ\nEsOYRv4OEqFR0XMQU5Rx6i+eVkaR4kSZphzHv1ilwIK86getgnTARwJoQTfD\nj0wg\r\n=QYF9\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIG3fwIE9W9yJgwAs+DXnm8ACBP1+yHPJucbvtM0SojzuAiBoSTj09iV5XjBrv+I4pd/Ma1XQni1T6ubSyawNAHcN8A=="}]},"_npmUser":{"name":"davestewart","email":"dev@davestewart.co.uk"},"directories":{},"maintainers":[{"name":"davestewart","email":"dev@davestewart.co.uk"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/outliner_1.2.0_1631972346507_0.1553605187244982"},"_hasShrinkwrap":false}},"time":{"created":"2021-09-17T00:50:17.563Z","1.0.0":"2021-09-17T00:50:17.812Z","modified":"2022-04-05T03:05:22.795Z","1.0.1":"2021-09-17T01:24:37.937Z","1.1.0":"2021-09-17T10:25:39.087Z","1.1.1":"2021-09-17T11:40:53.611Z","1.2.0":"2021-09-18T13:39:06.676Z"},"maintainers":[{"name":"davestewart","email":"dev@davestewart.co.uk"}],"description":"A node package to outline SVG strokes as fills","author":{"name":"Dave Stewart"},"license":"ISC","readme":"# Outliner\n\n![outliner logo](https://raw.githubusercontent.com/davestewart/outliner/master/assets/artwork/outliner-logo.png)\n\n## Intro\n\nOutliner is a Node package that converts SVG strokes to outlined fills as a *post-export* process:\n\n![process](https://raw.githubusercontent.com/davestewart/outliner/master/assets/artwork/process.png)\n\nThere are several reasons why retaining strokes within software such as [Figma](https://twitter.com/figmadesign) or [Sketch](https://twitter.com/sketch) is preferable:\n\n- strokes allow you to adjust widths and corner radii on the fly\n- outlined objects cannot be changed once outlined\n- union operators close open paths (Sketch) or create heavy exports (Figma)\n\nThis tool is designed for:\n\n- icon creators; no more locking in those curves and losing your vector tweaks!\n- developers; work with clean SVG conversions and manipulate attributes in code\n\n## Getting started\n\nTo use Outliner, you will need [Node](https://nodejs.org/en/) and NPM installed.\n\nOnce installed, there are two ways to use Outliner:\n\n- as a **[service](#running-as-a-service)**, where you watch a source folder and convert files as you export them\n- as a **[dependency](#running-as-a-dependency)**, where you use the conversion functions Outliner exposes in your own project\n\nIf you want to run Outliner from anywhere on your machine, install **globally** and run as a **service**.\n\n## Running as a service\n\n### As a global service\n\n> Best for designers working alone\n\nOpen a terminal prompt and install the package globally:\n\n```bash\nnpm install @davestewart/outliner --global\n```\n\nTo start converting, call the `outliner` service passing `source` and (optional) `target` paths:\n\n```\nnode outliner <source> <target>\n```\n\nNote:\n\n- paths can be relative or absolute\n- if you omit `target`, your `source` files will overwritten in place\n- To remove `width` and `height` information (so they resize nicely) pass the `--autosize` flag:\n\n```\nnode outliner <source> <target> --autosize\n```\n\n### As a project service\n\n> Best for designers working in teams\n\nYou can also run Outliner as a service **within** a JavaScript project.\n\nThis makes it simple for *anyone* who is working with the project source to update assets.\n\nThis time, install Outliner *locally*:\n\n```bash\nnpm install @davestewart/outliner --save-dev\n```\n\nThen, add a script entry to your project's `package.json`, e.g.:\n\n```json\n{\n  \"scripts\": {\n    \"outline-icons\": \"node outliner <source> <target> --autosize\"\n  }\n}\n```\n\nYou can then run the Outliner service like so:\n\n```bash\nnpm run outline-icons\n```\n\nOutliner will start and watch the folder you specify in `<source>` and output to `<target>`.\n\n### Logging\n\nOnce the service is running, Outliner will start converting files and logging results:\n\n![logging](https://raw.githubusercontent.com/davestewart/outliner/master/assets/artwork/cli.png)\n\nThe service will continue to watch the `source` folder, and any further exports will be detected, converted and logged automatically.\n\nA good terminal should render the paths as clickable links, making it easy to open the updated files.\n\nFor reference, the log states are:\n\n| State     | Description                                                  |\n| --------- | ------------------------------------------------------------ |\n| no file   | the source file did not exist                                |\n| no data   | the source file contained no data                            |\n| no write  | no target file was written, only the output returned (API only) |\n| no change | no change between output and target, so the target was not updated |\n| updated   | the new output was different from the old, so the target was updated |\n| copied    | the source file did not exist in the target folder, so was copied |\n\n## Running as a dependency\n\n> Best for developers who need to manipulate SVGs\n\nOutliner is a typical dependency that you install and use like any other package.\n\nInstall as usual:\n\n```bash\nnpm i @davestewart/outliner --save-dev\n```\n\nThere are two functions exposed:\n\n- `outlineFile()` - loads a file, outlines it, and returns or saves the result\n- `outlineSvg()` - outlines SVG text only\n\nConverting files should be straightforward:\n\n```js\n// import dependencies\nimport { outlineFile, outlineSvg } from '@davestewart/outliner'\n\n// convert a file and save a copy\noutlineFile('./assets/src/star.svg', './assets/trg/star.svg')\n\n// convert a file and save in place\noutlineFile('./assets/src/star.svg')\n\n// get the converted output but don't save\nconst output = outlineFile('./assets/src/star.svg', false)\n\n// convert existing SVG text\nconst output = outlineSvg(input)\n```\n\nNote that you can also pass a couple of extra arguments to:\n\n- change how Outliner behaves\n- log task information\n\nFor example:\n\n```js\n// variables\nconst tasks = ['outline'] // outline but don't strip width and height\nconst log = {}            // object to collect logging info\n\n// convert\noutlineFile('./assets/src/star.svg', './assets/trg/star.svg', tasks, log)\n\n// debug\nconsole.log(log)\n```\n\nThe log object will be populated by each of the tasks that ran:\n\n```\n{\n  paths: 1,\n  autosize: true,\n  state: 'updated'\n}\n```\n\nNote that you can also pass custom functions as `tasks`:\n\n```js\nfunction replaceColor (svg, log) {\n  log.replaceColor = true\n  return svg.replace(/#000000/g, 'currentColor')\n}\n\noutlineSvg(svg, ['outline', replaceColor], log)\n```\n\nCheck the `tests/index.js` file for working code.\n\n## API\n\n#### Outline File\n\n> Outlines a source file and overwrites or writes the results to a new file\n\nSignature:\n\n```ts\noutlineFile(src: string, trg?: string | false | null, tasks?: Array<string | Function>, log?: object)\n```\n\nParameters:\n\n- `src`: a relative or absolute path to a source folder\n- `trg`: an optional relative or absolute path to a target folder\n  - pass `undefined` to use the same `src` \n  - Pass `false` or `null` to skip writing and just return the output \n- `tasks`: an array of tasks to run, defaults to `['outline', 'autosize']`\n  - string tasks should be one of `'outline'` or`'autosize'`\n  - functions should be of the format `(svg: string, log: object) => {}: string`  \n- `log`: an optional `{}` object to receive logging information\n\n#### Outline SVG\n\n> Outlines SVG text and returns the result\n\nSignature:\n\n```js\noutlineSvg(svg: string, tasks?: Array<string | Function>, log?: object)\n```\n\nParameters:\n\n- `svg`: valid SVG text\n- `tasks`: an array of tasks to run, defaults to `['outline', 'autosize']`\n  - string tasks should be one of `'outline'` or`'autosize'`\n  - functions should be of the format `(svg: string, log: object) => {}: string` \n- `log`: an optional `{}` object to receive logging information\n\n#### State\n\n> An object of constants to compare against\n\nThe `log.state` for each file operation will contain one of these values:\n\n```js\nState.NO_FILE   = 'no file' \nState.NO_DATA   = 'no data' \nState.NO_WRITE  = 'no write' \nState.NO_CHANGE = 'no change' \nState.UPDATED   = 'updated' \nState.COPIED    = 'copied'\n```\n\n## Demos\n\n> If you clone the repo, you will be able to play with the demo.\n\nRun the demo with:\n\n```\nnpm run demo\n```\n\nYou can compare the `source` and `target` output in Figma, Sketch, or a text editor.\n\nIf you want to tweak and re-export the source files, Outliner will pick up any changes and update the target folder each time you export.\n","readmeFilename":"README.md"}