如何解决Npm 在 Windows 上开箱即用地安装本地目录
我有一个包位于另一个包(或本地任何地方)的子文件夹中,父包现在需要安装它:
?main
├──?node_modules
├──?otherProject
│ ├──?node_modules
│ ├──index.js
│ └──package.json
├──package.json
└──something.anything
文件(除了 node_modules
和其他常见项目)来自版本控制。有没有办法在没有提升权限的情况下在 Windows 7/8/10 上做到这一点,“开箱即用”?
在 linux 上,这将是一个简单的 npm install ./otherProject
。
虽然不太相关,但我要补充一点,这是一个自定义的 eslint 插件。也许有人有解决特定情况的技巧,但不能概括。
问题的简短摘要:
-
要在 Windows 上创建符号链接,该过程需要管理员权限,或者在 Windows 10 上developer mode。我不会算作“开箱即用”、需要管理员或特殊操作系统的构建- flags 是一个非解决方案。这意味着
npm install <folder>
和npm link
都不起作用,因为两者都会创建符号链接。 -
另一种方法是创建一个 tarball,然后安装它。首先,这引入了一个不必要的副本,这使得对包的更改变得复杂。其次,需要在安装之前创建这个 tarball,但是
preinstall
出于神话原因仍然没有首先完成。更新失败,因为它在preinstall
生成文件之前尝试解析文件。
我没有看到任何解决方案,例如this question 申请。 This answer 帮助了 tarball 方法,现在也被卡住了。我希望我只是误解了一些东西,或者犯了一个简单的错误。
解决方法
我认为将另一个文件夹中的模块引用到生产中是一种不好的做法。
我建议您为每个项目使用不同的文件夹:
?main
├──?mainProject
│ ├──?node_modules
│ ├──package.json
│ └──something.anything
├──?otherProject
│ ├──?node_modules
│ ├──index.js
│ └──package.json
└──otherProject-1.0.0.tgz // This file is created by node...
所以首先你打包另一个项目并将其安装在你的主项目中
main> npm pack otherProject
main> cd mainProject
main\mainProject> npm install --save ../otherProject-1.0.0.tgz
您将拥有更多控制权,您的解决方案将更简洁。
注意:如果您在进行任何更改并打包时不更改 otherProject
中 package.json 中的版本,您将拥有以前的版本。
如果您想将版本保留在 package.json
中,您可以使用以下命令清理 npm 的缓存:
npm cache clean --force
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。