创建单独的npm模块并在本地使用它们的正确方法是什么

时间:2017-06-15 15:16:08

标签: javascript node.js react-native npm

我创建了一个React Native组件,该组件位于具有自己的package.json文件的不同文件夹中,我想在另一个项目中使用它

MyComponent位于Workspace/MyComponent,位于package.json

中的几个依赖项
  "dependencies": {
    "react-navigation": "^1.0.0-beta.11"
  },
  "peerDependencies": {
    "react": "16.0.0-alpha.12",
    "react-native": "0.45.1"
  },
  "devDependencies": {
    "react": "16.0.0-alpha.12",
    "react-native": "0.45.1"
  }

我目前正在开发MyComponent所以我在回购中运行了npm install,有一个node_modules文件夹。

我已将[{1}}与位于MyComponent的{​​{1}}关联,并使用MyApp

虽然,当我运行Workspace/MyApp并尝试使用npm link时,它会抱怨重复声明,因为MyApp同时位于MyComponentreact,他们是联系在一起的。

如果我从MyComponent删除MyApp文件夹,则node_modules会抱怨MyComponent未定义。

在ReactJS世界中,webpack例如允许使用首选的node_modules文件夹设置root。

react-navigation

我希望做类似的事情,因此我没有重复的模块,可以在react本地调试module.exports = { ... resolve: { root: path.resolve(__dirname, 'node_modules'), } ... } ,而无需为每次更改重新安装MyComponent。对我来说,实现这一目标的最佳方法是什么?

由于

2 个答案:

答案 0 :(得分:0)

如果这最终将放在自己的repo中,然后将像任何其他组件一样安装,我可能只是在父项目的node_modules目录中构建它。这样可以防止您每次稍微改变都必须运行npm install

您还可以声明对本地文件的依赖关系,然后npm将它安装在node_modules中

  "dependencies": {
    "my-component": "file:app/components/my-component",
  }

所以我有一个我在我的package.json文件中引用的项目中构建的组件。当我运行npm install时,此组件安装在node_modules文件夹中。这可能有助于重复的库声明,但它不能解决重复使用npm install

的问题

更新:我刚刚了解到npm 5没有将文件复制到node_modules文件夹。它现在创建一个符号链接(基本上是指向真实目录的虚拟目录)到项目中的代码。

这意味着每次更改代码时都不必运行npm install,因此它可能是您的最佳解决方案。

答案 1 :(得分:0)

我找到了问题的解决方案,并将其称为whackage https://github.com/FormidableLabs/whackage