[英]Preventing global installations of an NPM package
我有一个库,并希望鼓励/强制用户只使用本地安装的版本。 我可以用艰难的方式或简单的方式做到这一点。
简单的方法是,如果NPM有一个机制来阻止对任何库使用带有npm install命令的--global
开关。
如果代码确定它是全局安装的,而不是在本地安装,那么很难在我的NPM打包中添加早期返回的代码。
有谁知道你是否可以阻止全球安装NPM包? 什么可能是最友好的方式来解决这个问题?
阻止用户全局安装模块的最佳方法是在文档中描述您的偏好 。
没有什么可以做,以强制用户从来没有在全球安装它,如果他们可以在本地进行安装。 如果需要,他们将始终能够手动移动文件。
在npm
社区中,假设用户可以控制他/她使用的模块 , 而不是相反 。 强迫人们以某种方式使用你的模块只会让他们不高兴。
因此,对您的问题唯一的好答案是记录您的代码的使用方式。 您可以要求他们以某种方式使用您的模块 - 但他们可以选择是否倾听您的意见。 您可以声明使用全局安装的模块不受支持,不明智,不鼓励,危险,但您无法强制用户根据需要使用该模块,这是一件好事。
现在,对于一些不好的答案 ,您可以随时测试模块的根目录的父目录是否名为node_modules
,如果不是,则会失败但是我确定如果有人碰巧在本地安装模块会导致某些问题你想要但在不同的目录下。 您可以查看模块是否从节点用于搜索模块的其中一个默认路径运行,但这些路径并不总是相同,并且您还必须考虑NODE_PATH
环境变量。
你可以做一些这样的技巧,但他们只会惹恼那些知道自己在做什么的用户,因为他们必须改变模块的源代码才能做他们想做的事情,无论怎么样,他们总能做到这一点。很难你努力让自己的生活变得更加艰难。
总之,我的建议是很好地记录您的模块并尊重您的用户和他们的需求,并相信他们知道他们在做什么。
有关阻止某个模块的全局npm
安装的Bash函数的工作示例,请参阅此答案 - 防止全局安装的工作示例 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.