{"_id":"link","_rev":"4211159","name":"link","description":"A better npm link","dist-tags":{"latest":"2.1.2"},"maintainers":[{"name":"hirokiosame","email":"hirokio@bu.edu"}],"time":{"modified":"2026-03-04T17:06:03.000Z","created":"2012-02-23T07:23:07.641Z","2.1.2":"2026-01-11T15:50:31.414Z","2.1.1":"2024-05-08T12:33:52.853Z","2.1.0":"2023-10-14T21:37:40.064Z","2.0.0":"2023-10-02T06:41:53.823Z","1.6.0":"2023-10-02T06:38:50.417Z","1.5.1":"2022-07-20T20:30:10.487Z","1.5.0":"2022-05-24T04:17:28.067Z","1.4.1":"2022-05-05T19:45:26.598Z","1.4.0":"2022-04-24T17:57:37.417Z","1.3.0":"2022-04-21T20:11:34.915Z","1.2.0":"2022-04-21T17:11:47.328Z","1.1.0":"2022-04-18T14:13:47.931Z","1.0.0":"2022-04-17T15:58:48.053Z","0.1.5":"2013-01-14T12:12:22.371Z","0.1.4":"2013-01-14T04:42:08.435Z","0.1.3":"2012-12-18T04:27:20.200Z","0.1.2":"2012-02-24T00:21:02.387Z","0.1.1":"2012-02-23T07:23:07.641Z"},"users":{},"author":{"name":"Hiroki Osame","email":"hiroki.osame@gmail.com"},"repository":{"type":"git","url":"git+https://github.com/privatenumber/link.git"},"versions":{"2.1.2":{"name":"link","version":"2.1.2","description":"A better npm link","keywords":["npm","link","symlink"],"license":"MIT","repository":{"type":"git","url":"git+https://github.com/privatenumber/link.git"},"funding":"https://github.com/privatenumber/link?sponsor=1","author":{"name":"Hiroki Osame","email":"hiroki.osame@gmail.com"},"bin":{"link":"dist/cli.js"},"gitHead":"113288e2a5040483fc2d21d1f0d5927c4f48e9fb","_id":"link@2.1.2","bugs":{"url":"https://github.com/privatenumber/link/issues"},"homepage":"https://github.com/privatenumber/link#readme","_nodeVersion":"24.11.0","_npmVersion":"11.6.1","dist":{"shasum":"59b622c7c4987290a8a45bf742cf81fcf0565980","size":35474,"noattachment":false,"key":"/link/-/link-2.1.2.tgz","tarball":"http://registry.cnpm.dingdandao.com/link/download/link-2.1.2.tgz"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:1850e5e7-0b42-4df7-a626-c35978d9c7ac"}},"directories":{},"maintainers":[{"name":"hirokiosame","email":"hirokio@bu.edu"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/link_2.1.2_1768146631280_0.305857789344006"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2026-01-11T15:50:31.414Z","publish_time":1768146631414,"_source_registry_name":"default","_cnpm_publish_time":1768146631414},"2.1.1":{"name":"link","version":"2.1.1","description":"A better npm link","keywords":["npm","link","symlink"],"license":"MIT","repository":{"type":"git","url":"git+https://github.com/privatenumber/link.git"},"funding":"https://github.com/privatenumber/link?sponsor=1","author":{"name":"Hiroki Osame","email":"hiroki.osame@gmail.com"},"bin":{"link":"dist/cli.js"},"_id":"link@2.1.1","gitHead":"da7bdd0a2bf66990c6bd8f50faa27b6792818c5e","bugs":{"url":"https://github.com/privatenumber/link/issues"},"homepage":"https://github.com/privatenumber/link#readme","_nodeVersion":"20.13.0","_npmVersion":"10.5.2","dist":{"shasum":"c5db408c295fcc75c9f7ff44ae62607e9b836dfa","size":29714,"noattachment":false,"key":"/link/-/link-2.1.1.tgz","tarball":"http://registry.cnpm.dingdandao.com/link/download/link-2.1.1.tgz"},"_npmUser":{"name":"hirokiosame","email":"hiroki.osame@gmail.com"},"directories":{},"maintainers":[{"name":"hirokiosame","email":"hirokio@bu.edu"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/link_2.1.1_1715171632664_0.46660252306834504"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2024-05-08T12:33:52.853Z","publish_time":1715171632853,"_source_registry_name":"default","_cnpm_publish_time":1715171632853},"2.1.0":{"name":"link","version":"2.1.0","description":"A better npm link","keywords":["npm","link","symlink"],"license":"MIT","repository":{"type":"git","url":"git+https://github.com/privatenumber/link.git"},"funding":"https://github.com/privatenumber/link?sponsor=1","author":{"name":"Hiroki Osame","email":"hiroki.osame@gmail.com"},"bin":{"link":"dist/cli.js"},"_id":"link@2.1.0","gitHead":"9b3d3885bd4d58163ccd45b22bb2f2860e005103","bugs":{"url":"https://github.com/privatenumber/link/issues"},"homepage":"https://github.com/privatenumber/link#readme","_nodeVersion":"18.18.0","_npmVersion":"9.8.1","dist":{"shasum":"a52dee157ff7ab9b44bc18de26effeb61ca35b6a","size":29565,"noattachment":false,"key":"/link/-/link-2.1.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/link/download/link-2.1.0.tgz"},"_npmUser":{"name":"hirokiosame","email":"hiroki.osame@gmail.com"},"directories":{},"maintainers":[{"name":"hirokiosame","email":"hirokio@bu.edu"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/link_2.1.0_1697319459864_0.15408794953820393"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2023-10-14T21:37:40.064Z","publish_time":1697319460064,"_source_registry_name":"default","_cnpm_publish_time":1697319460064},"2.0.0":{"name":"link","version":"2.0.0","description":"A better npm link","keywords":["npm","link","symlink"],"license":"MIT","repository":{"type":"git","url":"git+https://github.com/privatenumber/link.git"},"funding":"https://github.com/privatenumber/link?sponsor=1","author":{"name":"Hiroki Osame","email":"hiroki.osame@gmail.com"},"bin":{"link":"dist/cli.js"},"_id":"link@2.0.0","gitHead":"346f8db5d3f8639137ba6a40ae855c843176b8e9","bugs":{"url":"https://github.com/privatenumber/link/issues"},"homepage":"https://github.com/privatenumber/link#readme","_nodeVersion":"18.18.0","_npmVersion":"9.8.1","dist":{"shasum":"5bca7f189c5fc02b68c7d5feb3ff3dfaa6053100","size":16011,"noattachment":false,"key":"/link/-/link-2.0.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/link/download/link-2.0.0.tgz"},"_npmUser":{"name":"hirokiosame","email":"hiroki.osame@gmail.com"},"directories":{},"maintainers":[{"name":"hirokiosame","email":"hirokio@bu.edu"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/link_2.0.0_1696228913680_0.8685867908616345"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2023-10-02T06:41:53.823Z","publish_time":1696228913823,"_source_registry_name":"default","_cnpm_publish_time":1696228913823},"1.6.0":{"name":"link","version":"1.6.0","description":"A better npm link","keywords":["npm","link","symlink"],"license":"MIT","repository":{"type":"git","url":"git+https://github.com/privatenumber/link.git"},"funding":"https://github.com/privatenumber/link?sponsor=1","author":{"name":"Hiroki Osame","email":"hiroki.osame@gmail.com"},"bin":{"link":"dist/cli.js"},"_id":"link@1.6.0","gitHead":"d118e0b9982bf56354df593e8daf0417c5677bbd","bugs":{"url":"https://github.com/privatenumber/link/issues"},"homepage":"https://github.com/privatenumber/link#readme","_nodeVersion":"18.18.0","_npmVersion":"9.8.1","dist":{"shasum":"a8f90aba3e23ca0d8a500d0dcdfe0029e036f5da","size":22392,"noattachment":false,"key":"/link/-/link-1.6.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/link/download/link-1.6.0.tgz"},"_npmUser":{"name":"hirokiosame","email":"hiroki.osame@gmail.com"},"directories":{},"maintainers":[{"name":"hirokiosame","email":"hirokio@bu.edu"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/link_1.6.0_1696228730227_0.6158016963775212"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2023-10-02T06:38:50.417Z","publish_time":1696228730417,"_source_registry_name":"default","_cnpm_publish_time":1696228730417},"1.5.1":{"name":"link","version":"1.5.1","description":"A better npm link","keywords":["npm","link","symlink"],"license":"MIT","repository":{"type":"git","url":"git+https://github.com/privatenumber/link.git"},"funding":"https://github.com/privatenumber/link?sponsor=1","author":{"name":"Hiroki Osame","email":"hiroki.osame@gmail.com"},"bin":{"link":"dist/cli.js"},"gitHead":"18797e96518aaacc5c4c48ea70573a89ee9387a7","bugs":{"url":"https://github.com/privatenumber/link/issues"},"homepage":"https://github.com/privatenumber/link#readme","_id":"link@1.5.1","_nodeVersion":"16.14.2","_npmVersion":"8.5.0","dist":{"shasum":"2fd37e759820ee077267c8473e4e31cde30a3c6d","size":21957,"noattachment":false,"key":"/link/-/link-1.5.1.tgz","tarball":"http://registry.cnpm.dingdandao.com/link/download/link-1.5.1.tgz"},"_npmUser":{"name":"hirokiosame","email":"hiroki.osame@gmail.com"},"directories":{},"maintainers":[{"name":"hirokiosame","email":"hirokio@bu.edu"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/link_1.5.1_1658349010298_0.6694863944165053"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2022-07-20T21:06:11.515Z","publish_time":1658349010487,"_cnpm_publish_time":1658349010487},"1.5.0":{"name":"link","version":"1.5.0","description":"A better npm link","keywords":["npm","link","symlink"],"license":"MIT","repository":{"type":"git","url":"git+https://github.com/privatenumber/link.git"},"funding":"https://github.com/privatenumber/link?sponsor=1","author":{"name":"Hiroki Osame","email":"hiroki.osame@gmail.com"},"bin":{"link":"dist/cli.js"},"scripts":{"build":"pkgroll --minify","pretest":"npm run build","test":"tsx tests/index.ts","lint":"eslint --cache ."},"husky":{"hooks":{"pre-commit":"lint-staged"}},"lint-staged":{"*.{js,ts,md,json}":["eslint --cache","npm test"]},"devDependencies":{"@pvtnbr/eslint-config":"^0.20.2","@types/cmd-shim":"^5.0.0","@types/fs-extra":"^9.0.13","@types/node":"^17.0.25","cleye":"^1.1.0","cmd-shim":"^5.0.0","eslint":"^8.14.0","execa":"^6.1.0","fs-extra":"^10.1.0","get-node":"^12.1.0","husky":"^4.3.8","kolorist":"^1.5.1","lint-staged":"^12.3.7","manten":"^0.0.3","pkgroll":"^1.2.2","tsx":"^3.1.0","type-fest":"^2.12.2","typescript":"^4.6.3"},"eslintConfig":{"extends":"@pvtnbr","ignorePatterns":["tests/fixtures"],"rules":{"@typescript-eslint/no-shadow":["error",{"allow":["describe","test"]}]}},"gitHead":"102f4a2f6c38844a935108dd3f61a2b9b726c1eb","bugs":{"url":"https://github.com/privatenumber/link/issues"},"homepage":"https://github.com/privatenumber/link#readme","_id":"link@1.5.0","_nodeVersion":"16.14.2","_npmVersion":"8.5.0","dist":{"shasum":"4dfa7b6eb524057eec43b56ad058529c1fda5976","size":22364,"noattachment":false,"key":"/link/-/link-1.5.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/link/download/link-1.5.0.tgz"},"_npmUser":{"name":"hirokiosame","email":"hiroki.osame@gmail.com"},"directories":{},"maintainers":[{"name":"hirokiosame","email":"hirokio@bu.edu"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/link_1.5.0_1653365847886_0.39901221511634355"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2022-05-24T04:39:09.342Z","publish_time":1653365848067,"_cnpm_publish_time":1653365848067},"1.4.1":{"name":"link","version":"1.4.1","description":"A better npm link","keywords":["npm","link","symlink"],"license":"MIT","repository":{"type":"git","url":"git+https://github.com/privatenumber/link.git"},"funding":"https://github.com/privatenumber/link?sponsor=1","author":{"name":"Hiroki Osame","email":"hiroki.osame@gmail.com"},"bin":{"link":"dist/cli.js"},"scripts":{"build":"pkgroll --minify","pretest":"npm run build","test":"esno tests/index.ts","lint":"eslint --cache ."},"husky":{"hooks":{"pre-commit":"lint-staged"}},"lint-staged":{"*.{js,ts,md,json}":["eslint --cache","npm test"]},"devDependencies":{"@pvtnbr/eslint-config":"^0.20.2","@types/cmd-shim":"^5.0.0","@types/fs-extra":"^9.0.13","@types/node":"^17.0.25","cleye":"^1.1.0","cmd-shim":"^5.0.0","eslint":"^8.14.0","esno":"^0.14.1","execa":"^6.1.0","fs-extra":"^10.1.0","get-node":"^12.1.0","husky":"^4.3.8","kolorist":"^1.5.1","lint-staged":"^12.3.7","manten":"^0.0.3","pkgroll":"^1.2.2","type-fest":"^2.12.2","typescript":"^4.6.3"},"eslintConfig":{"extends":"@pvtnbr","ignorePatterns":["tests/fixtures"],"rules":{"@typescript-eslint/no-shadow":["error",{"allow":["describe","test"]}]}},"gitHead":"afefdc8a3ace4fb702f9e2e80a376865ff94fdc7","bugs":{"url":"https://github.com/privatenumber/link/issues"},"homepage":"https://github.com/privatenumber/link#readme","_id":"link@1.4.1","_nodeVersion":"16.14.2","_npmVersion":"8.5.0","dist":{"shasum":"f12fc629bee020e0bc9677a0d8f76b22b22d939e","size":22303,"noattachment":false,"key":"/link/-/link-1.4.1.tgz","tarball":"http://registry.cnpm.dingdandao.com/link/download/link-1.4.1.tgz"},"_npmUser":{"name":"hirokiosame","email":"hiroki.osame@gmail.com"},"directories":{},"maintainers":[{"name":"hirokiosame","email":"hirokio@bu.edu"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/link_1.4.1_1651779926419_0.7060757491588769"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2022-05-05T20:00:26.650Z","publish_time":1651779926598,"_cnpm_publish_time":1651779926598},"1.4.0":{"name":"link","version":"1.4.0","description":"A better npm link","keywords":["npm","link","symlink"],"license":"MIT","repository":{"type":"git","url":"git+https://github.com/privatenumber/link.git"},"funding":"https://github.com/privatenumber/link?sponsor=1","author":{"name":"Hiroki Osame","email":"hiroki.osame@gmail.com"},"bin":{"link":"dist/cli.js"},"scripts":{"build":"pkgroll --minify","pretest":"npm run build","test":"esno tests/index.ts","lint":"eslint --cache ."},"husky":{"hooks":{"pre-commit":"lint-staged"}},"lint-staged":{"*.{js,ts,md,json}":["eslint --cache","npm test"]},"devDependencies":{"@pvtnbr/eslint-config":"^0.19.1","@types/cmd-shim":"^5.0.0","@types/fs-extra":"^9.0.13","@types/node":"^17.0.25","cleye":"^1.1.0","cmd-shim":"^5.0.0","eslint":"^8.13.0","esno":"^0.14.1","execa":"^6.1.0","fs-extra":"^10.1.0","get-node":"^12.1.0","husky":"^4.3.8","kolorist":"^1.5.1","lint-staged":"^12.3.7","manten":"^0.0.3","pkgroll":"^1.0.4","type-fest":"^2.12.2","typescript":"^4.6.3"},"eslintConfig":{"extends":"@pvtnbr","ignorePatterns":["tests/fixtures"],"rules":{"@typescript-eslint/no-shadow":["error",{"allow":["describe","test"]}]}},"gitHead":"fd6ad4e5536a85188a3d2f9e8935227b1a1c506a","bugs":{"url":"https://github.com/privatenumber/link/issues"},"homepage":"https://github.com/privatenumber/link#readme","_id":"link@1.4.0","_nodeVersion":"16.14.2","_npmVersion":"8.5.0","dist":{"shasum":"d3974525788b87ec7a0e727ea6ff5340fed07680","size":23342,"noattachment":false,"key":"/link/-/link-1.4.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/link/download/link-1.4.0.tgz"},"_npmUser":{"name":"hirokiosame","email":"hiroki.osame@gmail.com"},"directories":{},"maintainers":[{"name":"hirokiosame","email":"hirokio@bu.edu"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/link_1.4.0_1650823057186_0.41168991955623535"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2022-04-24T17:57:40.688Z","publish_time":1650823057417,"_cnpm_publish_time":1650823057417},"1.3.0":{"name":"link","version":"1.3.0","description":"A better npm link","keywords":["npm","link","symlink"],"license":"MIT","repository":{"type":"git","url":"git+https://github.com/privatenumber/link.git"},"funding":"https://github.com/privatenumber/link?sponsor=1","author":{"name":"Hiroki Osame","email":"hiroki.osame@gmail.com"},"bin":{"link":"dist/cli.js"},"scripts":{"build":"pkgroll --minify","pretest":"npm run build","test":"esno tests/index.ts","lint":"eslint ."},"devDependencies":{"@pvtnbr/eslint-config":"^0.19.1","@types/node":"^17.0.25","cleye":"^1.1.0","cmd-shim":"^5.0.0","eslint":"^8.13.0","esno":"^0.14.1","execa":"^6.1.0","get-node":"^12.1.0","kolorist":"^1.5.1","manten":"^0.0.3","pkgroll":"^1.0.4","type-fest":"^2.12.2","typescript":"^4.6.3"},"eslintConfig":{"extends":"@pvtnbr","ignorePatterns":["tests/fixtures"],"rules":{"@typescript-eslint/no-shadow":["error",{"allow":["describe","test"]}]}},"gitHead":"fe6b79317ac060e1c5e118e2d59c1cefdbf35441","bugs":{"url":"https://github.com/privatenumber/link/issues"},"homepage":"https://github.com/privatenumber/link#readme","_id":"link@1.3.0","_nodeVersion":"16.14.2","_npmVersion":"8.5.0","dist":{"shasum":"b94a55e8abcc82dc283d987cc3ae27912981aecd","size":18344,"noattachment":false,"key":"/link/-/link-1.3.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/link/download/link-1.3.0.tgz"},"_npmUser":{"name":"hirokiosame","email":"hiroki.osame@gmail.com"},"directories":{},"maintainers":[{"name":"hirokiosame","email":"hirokio@bu.edu"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/link_1.3.0_1650571894662_0.7206329173604857"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2022-04-21T20:11:42.954Z","publish_time":1650571894915,"_cnpm_publish_time":1650571894915},"1.2.0":{"name":"link","version":"1.2.0","description":"A better npm link","keywords":["npm","link","symlink"],"license":"MIT","repository":{"type":"git","url":"git+https://github.com/privatenumber/link.git"},"funding":"https://github.com/privatenumber/link?sponsor=1","author":{"name":"Hiroki Osame","email":"hiroki.osame@gmail.com"},"bin":{"link":"dist/cli.js"},"scripts":{"build":"pkgroll --minify","pretest":"npm run build","test":"esno tests/index.ts","lint":"eslint ."},"devDependencies":{"@pvtnbr/eslint-config":"^0.19.1","@types/node":"^17.0.25","cleye":"^1.1.0","cmd-shim":"^5.0.0","eslint":"^8.13.0","esno":"^0.14.1","execa":"^6.1.0","get-node":"^12.1.0","kolorist":"^1.5.1","manten":"^0.0.3","pkgroll":"^1.0.4","type-fest":"^2.12.2","typescript":"^4.6.3"},"eslintConfig":{"extends":"@pvtnbr","ignorePatterns":["tests/fixtures"],"rules":{"@typescript-eslint/no-shadow":["error",{"allow":["describe","test"]}]}},"gitHead":"445799c656e6f03dc84f61e0568b903d3b8bd7cf","bugs":{"url":"https://github.com/privatenumber/link/issues"},"homepage":"https://github.com/privatenumber/link#readme","_id":"link@1.2.0","_nodeVersion":"16.14.2","_npmVersion":"8.5.0","dist":{"shasum":"a9c846a6f289125be0c587e2655b1d385bca5de4","size":17857,"noattachment":false,"key":"/link/-/link-1.2.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/link/download/link-1.2.0.tgz"},"_npmUser":{"name":"hirokiosame","email":"hiroki.osame@gmail.com"},"directories":{},"maintainers":[{"name":"hirokiosame","email":"hirokio@bu.edu"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/link_1.2.0_1650561107146_0.027977041359782406"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2022-04-21T17:17:31.966Z","publish_time":1650561107328,"_cnpm_publish_time":1650561107328},"1.1.0":{"name":"link","version":"1.1.0","description":"A better npm link","keywords":["npm","link","symlink"],"license":"MIT","repository":{"type":"git","url":"git+https://github.com/privatenumber/link.git"},"funding":"https://github.com/privatenumber/link?sponsor=1","author":{"name":"Hiroki Osame","email":"hiroki.osame@gmail.com"},"bin":{"link":"dist/cli.js"},"scripts":{"build":"pkgroll --minify","pretest":"npm run build","test":"esno tests/index.ts","lint":"eslint ."},"devDependencies":{"@pvtnbr/eslint-config":"^0.19.1","@types/node":"^17.0.23","cleye":"^1.1.0","del":"^6.0.0","eslint":"^8.13.0","esno":"^0.14.1","execa":"^6.1.0","get-node":"^12.1.0","kolorist":"^1.5.1","manten":"^0.0.3","pkgroll":"^1.0.3","type-fest":"^2.12.2","typescript":"^4.6.3"},"eslintConfig":{"extends":"@pvtnbr","ignorePatterns":["tests/fixtures"],"rules":{"@typescript-eslint/no-shadow":["error",{"allow":["describe","test"]}]}},"gitHead":"2141a58664f6e0531d36dac00aac551a181aa0d7","bugs":{"url":"https://github.com/privatenumber/link/issues"},"homepage":"https://github.com/privatenumber/link#readme","_id":"link@1.1.0","_nodeVersion":"16.14.2","_npmVersion":"8.5.0","dist":{"shasum":"f9acee8a95e04e19a30e2575f6900fcab1b294ac","size":49133,"noattachment":false,"key":"/link/-/link-1.1.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/link/download/link-1.1.0.tgz"},"_npmUser":{"name":"hirokiosame","email":"hiroki.osame@gmail.com"},"directories":{},"maintainers":[{"name":"hirokiosame","email":"hirokio@bu.edu"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/link_1.1.0_1650291227672_0.38737958924901106"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2022-04-18T14:13:57.946Z","publish_time":1650291227931,"_cnpm_publish_time":1650291227931},"1.0.0":{"name":"link","version":"1.0.0","description":"A better npm link","keywords":["npm","link","symlink"],"license":"MIT","repository":{"type":"git","url":"git+https://github.com/privatenumber/link.git"},"funding":"https://github.com/privatenumber/link?sponsor=1","author":{"name":"Hiroki Osame","email":"hiroki.osame@gmail.com"},"bin":{"link":"dist/cli.js"},"scripts":{"build":"pkgroll --minify","pretest":"npm run build","test":"esno tests/index.ts","lint":"eslint ."},"devDependencies":{"@pvtnbr/eslint-config":"^0.19.1","@types/node":"^17.0.23","cleye":"^1.1.0","del":"^6.0.0","eslint":"^8.13.0","esno":"^0.14.1","execa":"^6.1.0","get-node":"^12.1.0","kolorist":"^1.5.1","manten":"^0.0.3","pkgroll":"^1.0.3","type-fest":"^2.12.2","typescript":"^4.6.3"},"eslintConfig":{"extends":"@pvtnbr","ignorePatterns":["tests/fixtures"],"rules":{"@typescript-eslint/no-shadow":["error",{"allow":["describe","test"]}]}},"gitHead":"c5d71ad6a49c6241ef06413f3bc9ac86dfae020c","bugs":{"url":"https://github.com/privatenumber/link/issues"},"homepage":"https://github.com/privatenumber/link#readme","_id":"link@1.0.0","_nodeVersion":"16.14.2","_npmVersion":"8.5.0","dist":{"shasum":"6b57d301333f2056c47a8fd06df028296074d7be","size":48902,"noattachment":false,"key":"/link/-/link-1.0.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/link/download/link-1.0.0.tgz"},"_npmUser":{"name":"hirokiosame","email":"hiroki.osame@gmail.com"},"directories":{},"maintainers":[{"name":"hirokiosame","email":"hirokio@bu.edu"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/link_1.0.0_1650211127841_0.48788879742208113"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2022-04-17T15:59:03.689Z","publish_time":1650211128053,"_cnpm_publish_time":1650211128053},"0.1.5":{"name":"link","version":"0.1.5","description":"Module runtime and converter for Labeled Modules, CommonJS and AMD.","homepage":"http://github.com/calyptus/link.js","keywords":["util","modules","label","client","browser","amd","commonjs"],"author":{"name":"Sebastian Markbage","email":"sebastian@calyptus.eu"},"bugs":"https://github.com/calyptus/link.js/issues","licenses":[{"type":"BSD-2-Clause","url":"http://raw.github.com/calyptus/link.js/master/LICENSE"},{"type":"MIT","url":"http://raw.github.com/calyptus/link.js/master/LICENSE"}],"dependencies":{},"engines":{"node":"> 0.4.x < 0.9.0"},"repository":{"type":"git","url":"git://github.com/calyptus/link.js.git"},"main":"./Source/Node/link.js","bin":{"linkjs":"./Source/Node/link.js","link.js":"./Source/Node/link.js"},"readmeFilename":"README.md","_id":"link@0.1.5","dist":{"shasum":"7fc7aa5bd3f6ac5a19c5255a23f4207d6852e92e","size":47551,"noattachment":false,"key":"/link/-/link-0.1.5.tgz","tarball":"http://registry.cnpm.dingdandao.com/link/download/link-0.1.5.tgz"},"_npmVersion":"1.1.65","_npmUser":{"name":"sebmarkbage","email":"sebastian@calyptus.eu"},"maintainers":[{"name":"hirokiosame","email":"hirokio@bu.edu"}],"directories":{},"publish_time":1358165542371,"_hasShrinkwrap":false,"_cnpm_publish_time":1358165542371,"_cnpmcore_publish_time":"2021-12-16T14:47:07.560Z"},"0.1.4":{"name":"link","version":"0.1.4","description":"Module runtime and converter for Labeled Modules, CommonJS and AMD.","homepage":"http://github.com/calyptus/link.js","keywords":["util","modules","label","client","browser","amd","commonjs"],"author":{"name":"Sebastian Markbage","email":"sebastian@calyptus.eu"},"bugs":"https://github.com/calyptus/link.js/issues","licenses":[{"type":"BSD-2-Clause","url":"http://raw.github.com/calyptus/link.js/master/LICENSE"},{"type":"MIT","url":"http://raw.github.com/calyptus/link.js/master/LICENSE"}],"dependencies":{},"engines":{"node":"> 0.4.x < 0.9.0"},"repository":{"type":"git","url":"git://github.com/calyptus/link.js.git"},"main":"./Source/Node/link.js","bin":{"linkjs":"./Source/Node/link.js","link.js":"./Source/Node/link.js"},"readmeFilename":"README.md","_id":"link@0.1.4","dist":{"shasum":"511149807bc58e02ba270c488bfe7f1bc4d1a5ad","size":47359,"noattachment":false,"key":"/link/-/link-0.1.4.tgz","tarball":"http://registry.cnpm.dingdandao.com/link/download/link-0.1.4.tgz"},"_npmVersion":"1.1.65","_npmUser":{"name":"sebmarkbage","email":"sebastian@calyptus.eu"},"maintainers":[{"name":"hirokiosame","email":"hirokio@bu.edu"}],"directories":{},"publish_time":1358138528435,"_hasShrinkwrap":false,"_cnpm_publish_time":1358138528435,"_cnpmcore_publish_time":"2021-12-16T14:47:07.753Z"},"0.1.3":{"name":"link","version":"0.1.3","description":"Module runtime and converter for Labeled Modules, CommonJS and AMD.","homepage":"http://github.com/calyptus/link.js","keywords":["util","modules","label","client","browser","amd","commonjs"],"author":{"name":"Sebastian Markbage","email":"sebastian@calyptus.eu"},"bugs":"https://github.com/calyptus/link.js/issues","licenses":[{"type":"BSD-2-Clause","url":"http://raw.github.com/calyptus/link.js/master/LICENSE"},{"type":"MIT","url":"http://raw.github.com/calyptus/link.js/master/LICENSE"}],"dependencies":{},"engines":{"node":"> 0.4.x < 0.7.0"},"repository":{"type":"git","url":"git://github.com/calyptus/link.js.git"},"main":"./Source/Node/link.js","bin":{"linkjs":"./Source/Node/link.js","link.js":"./Source/Node/link.js"},"readmeFilename":"README.md","_id":"link@0.1.3","dist":{"shasum":"df80317ce86c8a39d0869e854ebcc9332ac089b5","size":4953994,"noattachment":false,"key":"/link/-/link-0.1.3.tgz","tarball":"http://registry.cnpm.dingdandao.com/link/download/link-0.1.3.tgz"},"_npmVersion":"1.1.65","_npmUser":{"name":"sebmarkbage","email":"sebastian@calyptus.eu"},"maintainers":[{"name":"hirokiosame","email":"hirokio@bu.edu"}],"directories":{},"publish_time":1355804840200,"_hasShrinkwrap":false,"_cnpm_publish_time":1355804840200,"_cnpmcore_publish_time":"2021-12-16T14:47:13.509Z"},"0.1.2":{"name":"link","version":"0.1.2","description":"Module runtime and converter for Labeled Modules, CommonJS and AMD.","homepage":"http://github.com/calyptus/link.js","keywords":["util","modules","label","client","browser","amd","commonjs"],"author":{"name":"Sebastian Markbage","email":"sebastian@calyptus.eu"},"bugs":{"name":"https://github.com/calyptus/link.js/issues"},"licenses":[{"type":"BSD-2-Clause","url":"http://raw.github.com/calyptus/link.js/master/LICENSE"},{"type":"MIT","url":"http://raw.github.com/calyptus/link.js/master/LICENSE"}],"dependencies":{},"engines":{"node":"> 0.4.x < 0.7.0"},"repository":{"type":"git","url":"git://github.com/calyptus/link.js.git"},"main":"./Source/Node/link.js","bin":{"linkjs":"./Source/Node/link.js","link.js":"./Source/Node/link.js"},"_npmUser":{"name":"sebmarkbage","email":"sebastian@calyptus.eu"},"_id":"link@0.1.2","devDependencies":{},"optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.1","_nodeVersion":"v0.6.11","_defaultsLoaded":true,"dist":{"shasum":"805dc224631c9bfc4d6819ea6d2af0cdbe149f95","size":43465,"noattachment":false,"key":"/link/-/link-0.1.2.tgz","tarball":"http://registry.cnpm.dingdandao.com/link/download/link-0.1.2.tgz"},"maintainers":[{"name":"hirokiosame","email":"hirokio@bu.edu"}],"directories":{},"publish_time":1330042862387,"_hasShrinkwrap":false,"_cnpm_publish_time":1330042862387,"_cnpmcore_publish_time":"2021-12-16T14:47:14.046Z"},"0.1.1":{"name":"link","version":"0.1.1","description":"Module runtime and converter for Labeled Modules, CommonJS and AMD.","homepage":"http://github.com/calyptus/link.js","keywords":["util","modules","label","client","browser","amd","commonjs"],"author":{"name":"Sebastian Markbage","email":"sebastian@calyptus.eu"},"bugs":{"name":"https://github.com/calyptus/link.js/issues"},"licenses":[{"type":"BSD-2-Clause","url":"http://raw.github.com/calyptus/link.js/master/LICENSE"},{"type":"MIT","url":"http://raw.github.com/calyptus/link.js/master/LICENSE"}],"dependencies":{},"engines":{"node":"> 0.4.x < 0.7.0"},"repository":{"type":"git","url":"git://github.com/calyptus/link.js.git"},"main":"./Source/Node/link.js","bin":{"linkjs":"./Source/Node/link.js","link.js":"./Source/Node/link.js"},"_npmUser":{"name":"sebmarkbage","email":"sebastian@calyptus.eu"},"_id":"link@0.1.1","devDependencies":{},"optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.1","_nodeVersion":"v0.6.11","_defaultsLoaded":true,"dist":{"shasum":"235f2d74ebd3e01c54890bc3beca7b1e51547760","size":434270,"noattachment":false,"key":"/link/-/link-0.1.1.tgz","tarball":"http://registry.cnpm.dingdandao.com/link/download/link-0.1.1.tgz"},"maintainers":[{"name":"hirokiosame","email":"hirokio@bu.edu"}],"directories":{},"publish_time":1329981787641,"_hasShrinkwrap":false,"_cnpm_publish_time":1329981787641,"_cnpmcore_publish_time":"2021-12-16T14:47:14.907Z"}},"readme":"<p align=\"center\">\n\t<img width=\"180\" src=\".github/logo.webp\">\n</p>\n<h1 align=\"center\">\n\t<sup>npx link</sup>\n\t<br>\n\t<a href=\"https://npm.im/link\"><img src=\"https://badgen.net/npm/v/link\"></a> <a href=\"https://npm.im/link\"><img src=\"https://badgen.net/npm/dm/link\"></a>\n</h1>\n\nA safer and enhanced version of [`npm link`](https://docs.npmjs.com/cli/v8/commands/npm-link).\n\nWhy is `npm link` unsafe? Read the [blog post](https://hirok.io/posts/avoid-npm-link).\n\n### Features\n- ???? Link dependencies without removing previous links\n- ???? Only resolves to local paths\n- ???? Config file quickly linking multiple packages\n- ???? Deep linking for quickling linking multilple packages\n\n<br>\n\n<p align=\"center\">\n\t<a href=\"https://github.com/sponsors/privatenumber/sponsorships?tier_id=398771\"><img width=\"412\" src=\"https://raw.githubusercontent.com/privatenumber/sponsors/master/banners/assets/donate.webp\"></a>\n\t<a href=\"https://github.com/sponsors/privatenumber/sponsorships?tier_id=397608\"><img width=\"412\" src=\"https://raw.githubusercontent.com/privatenumber/sponsors/master/banners/assets/sponsor.webp\"></a>\n</p>\n<p align=\"center\"><sup><i>Already a sponsor?</i> Join the discussion in the <a href=\"https://github.com/pvtnbr/link\">Development repo</a>!</sup></p>\n\n## Terminology\n\n- **Dependency package**\n\n\tThe package getting linked. This is usually a library.\n\n- **Consuming package**\n\n\tThe project you want to link the _Dependency package_ as a dependency of. This is usually an application.\n\n\t`consuming-package/node_modules/dependency-package` → `dependency-package`\n\n\n## Usage\n\n### Linking a package\n\nFrom the _Consuming package_ directory, link the _Dependency package_:\n\n```sh\nnpx link <dependency-package-path>\n```\n\nThis creates a symbolic link inside the `node_modules` of _Consuming package_, referencing the _Dependency package_.\n\n\n> **????️ Secure linking**\n>\n> Unlike `npm link`, it doesn't install the _Dependency package_ globally or re-install project dependencies.\n\n### Publish mode\n\nUsing symbolic links may not replicate the exact environment you get from a standard `npm install`. This discrepancy primarily arises from symlinked packages retaining their development `node_modules` directory. This can lead to issues, especially when multiple packages depend on the same library.\n\n<details>\n\t<summary>Here's an example</summary>\n\t<br>\n\nIn a production environment, `npm install` detects common dependencies and installs only one instance of a shared dependency. However, when there's a symbolic link to the development directory of a dependency, separate copies of those dependencies are resolved from the development `node_modules`.\n\nLet's say there's an _App A_ with a dependency on _Package B_, and they both depend on _Library C_:\n\n- Production environment\n\n\t`npm install` detects that both _App A_ and _Package B_ depends on _Library C_, and only installs one copy of _Library C_ for them to share.\n\n- Symbolic link environment\n\n\t_App A_ has its copy of _Library C_, and _Package B_ also has its development copy of _Library C_—possibly with different versions. Consequently, when you run the application, it will load two different versions of _Library C_, leading to unexpected outcomes.\n\n</details>\n\n_Publish mode_ helps replicate the production environment in your development setup.\n\n#### Setup instructions\n\n1. In the _Dependency package_, run `npm pack` to create a tarball:\n\n\t```sh\n\tcd dependency-package-path\n\tnpm pack\n\t```\n\n\tThis generates a tarball (`.tgz`) file in the current directory. Installing from this simulates the conditions of a published package without actually publishing it.\n\n\t> **Tip:** You can skip this step if this dependency is already installed from npm and there are no changes to the dependency's `package.json`\n\n2. In the _Consuming package_\n\n\t1. Install the Dependency tarball from _Step 1_\n\n\t\t```sh\n\t\tnpm install --no-save <dependency-tarball-path>\n\t\t```\n\n\t\tThis sets up the same `node_modules` tree used in a production environment.\n\n\t2. Link the _Dependency package_\n\n\t\t```sh\n\t\tnpx link publish <dependency-package-path>\n\t\t```\n\n\t\tThis creates hard links in `node_modules/dependency` to the specific publish assets of the _Dependency package_.\n\n\t\t<details>\n\t\t<summary><em>Why hard links instead of symbolic links?</em></summary>\n\t\t<br>\n\n\t\tAnother issue with the symlink approach is that Node.js, and popular bundlers, looks up the `node_module` directory relative to a module's realpath rather than the import path (symlink path). By using hard links, we can prevent this behavior and ensure that the `node_modules` directory is resolved using the production tree we set up in _Step 2_.\n\t\t</details>\n\n4. Start developing!\n\n\tAny changes you make to the _Dependency package_ will be reflected in the `node_modules` directory of the _Consuming package_.\n\n\t> **Note:** If the _Dependency package_ emits new files, you'll need to re-run `npx link publish <dependency-package-path>` to create new hard links.\n\t\n### Configuration file\n\nCreate a `link.config.json` (or `link.config.js`) configuration file at the root of the _Consuming package_ to automatically setup links to multiple _Dependency packages_.\n\nExample _link.config.json_:\n```json5\n{\n    \"packages\": [\n        \"/path/to/dependency-path-a\",\n        \"../dependency-path-b\",\n    ],\n}\n```\n\nThe configuration has the following type schema:\n```ts\ntype LinkConfig = {\n\n    // Whether to run `npx link` on dependency packages with link.config.json\n    deepLink?: boolean\n\n    // List of dependency packages to link\n    packages?: string[]\n}\n```\n\n> **Note:** It's not recommended to commit this file to source control since this is for local development with local paths.\n\n\nTo link the dependencies defined in `link.config.json`, run:\n```sh\nnpx link\n```\n\n### Deep linking\n\nBy default, `npx link` only links packages in the _Consuming package_. However, there are cases where the _Dependency packages_ also needs linking setup.\n\nDeep linking recursively runs link on every linked dependency that has a `link.config.json` file.\n\nEnable with the `--deep` flag or `deepLink` property in `link.config.json`.\n\n```sh\nnpx link --deep\n```\n\n## FAQ\n\n### Why should I use `npx link` over `npm link`?\nBecause `npm link` [is complicated and dangerous to use](https://hirok.io/posts/avoid-npm-link). And `npx link` offers more features such as _Publish mode_.\n\n### How do I remove the links?\nRun `npm install` and it should remove them.\n\n`npm install` enforces the integrity of `node_modules` by making sure all packages are correctly installed. Reverting the links is a side effect of this.\n\n### Why does `npx link` point to `ln`?\n\nYou must use npx v7 or higher. Check the version with `npx -v`.\n\nIn the obsolete npx v6, local binaries take precedence over npm modules so  `npx link` can point to the native `link`/`ln` command:\n```\n$ npx link\nusage: ln [-s [-F] | -L | -P] [-f | -i] [-hnv] source_file [target_file]\n       ln [-s [-F] | -L | -P] [-f | -i] [-hnv] source_file ... target_dir\n       link source_file target_file\n```\n\nTo work around this, install `link` globally first:\n```sh\n$ npm i -g link\n$ npx link\n```\n\n## Related\n\n- [`npx ci`](https://github.com/privatenumber/ci) - A better `npm ci`.\n\n\n## Sponsors\n\n<p align=\"center\">\n\t<a href=\"https://github.com/sponsors/privatenumber\">\n\t\t<img src=\"https://cdn.jsdelivr.net/gh/privatenumber/sponsors/sponsorkit/sponsors.svg\">\n\t</a>\n</p>\n","_attachments":{},"homepage":"https://github.com/privatenumber/link#readme","bugs":{"url":"https://github.com/privatenumber/link/issues"},"license":"MIT"}