通过 npm 源来限制包管理工具
背景
npm
和 yarn
不共享版本锁文件。锁定文件对于维护项目的稳定性是必需的。
我们如何确保开发人员在我们的项目中使用相同的包管理工具?
现有一些方法利用 preinstall
钩子。参见:
但这种做法在项目为 npm 包时不起作用。当发布 npm 包时,npm publish
也将调用 preinstall
钩子。
自定义 npm 源
也许我们可以通过自定义 npm 源来做到这一点。
源代码,请参见 npm-registry-proxy。
我们可以将 registry="https://npm-registry-proxy.vivaxy.now.sh/yarn/https%3A%2F%2Fregistry.npmjs.org%2F/"
添加到 .npmrc
中。
结果
在项目 .npmrc
中,我们有 registry="https://npm-registry-proxy.vivaxy.now.sh/yarn/https%3A%2F%2Fregistry.npmjs.org%2F/"
。
- 使用
yarn add
时,能够成功安装依赖。 - 使用
npm i
时,会提示安装错误。
限制包管理工具的功能实现了。但是发布 npm 包时,PUT
请求不会成功转发到目标源,还是不能用在 npm 包的项目中。