【问题标题】:What is the right way to create separate npm modules and use them locally创建单独的 npm 模块并在本地使用它们的正确方法是什么
【发布时间】:2017-06-15 15:16:08
【问题描述】:

我创建了一个 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,所以我在repo中运行了npm install,有一个node_modules文件夹。

我已使用npm linkMyComponent 与位于Workspace/MyAppMyApp 关联起来

虽然,当我运行MyApp 并尝试使用MyComponent 时,它抱怨重复声明,因为reactMyComponentMyApp 中,并且它们是链接的。

如果我从MyComponent 中删除node_modules 文件夹,react-navigation 会抱怨react 未定义。

在 ReactJS 世界中,例如 webpack 允许使用首选的 node_modules 文件夹设置根目录,这很棒。

module.exports = {
  ...
  resolve: {
    root: path.resolve(__dirname, 'node_modules'),
  }
  ...
}

我希望做类似的事情,这样我就没有重复的模块,并且可以在本地调试 MyApp 中的 MyComponent,而无需为每次更改重新安装 MyComponent。实现这一目标的最佳方法是什么?

谢谢

【问题讨论】:

    标签: javascript node.js react-native npm


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      如果这最终会被放入它自己的 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,因此它可能是最适合您的解决方案。

      【讨论】:

      • npm link 是另一种可能的解决方案。
      猜你喜欢
      • 2016-12-12
      • 1970-01-01
      • 1970-01-01
      • 2014-10-04
      • 2021-05-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-19
      相关资源
      最近更新 更多