将本地包导入为不在React-Native项目中的模块

时间:2017-08-15 15:15:54

标签: react-native webpack lerna

在React-Native项目中,我发现如果您的本地包有一个有效的package.json文件,您可以像node_modules中的模块一样导入该文件而不需要相对路径。

例如,

app/                             # a React-Native project
  |- any_folder_for_packages/
  |   |- foo/
  |       |- package.json
  |       |- index.js
  |- src/
  |   |- bar/
  |       |- bar.js
  |- ...

在这种情况下,您可以使用以下任一方法导入foo中的包bar.js

// with a relative path
import foo from '../../any_folder_for_packages/foo';

// like a module (without a relative path)
import foo from 'foo';

打包程序将尝试查找并使用包含符合要求的package.json的任何本地模块。

问题

我有一个不在React-Native项目中的本地包,我该如何导入它

projects/
  |- app/                # a React-Native project
  |   |- src/
  |   |   |- bar/
  |   |       |- bar.js  # need to import the package foo as a module which is not in this project
  |   |- ...
  |- other_paths/
      |- foo/
          |- package.json
          |- index.js

我尝试使用

// like a module (without a relative path)
import foo from 'foo';

但未能找到该模块。

在打包开发或捆绑生产时如何使用react-native查找包?

1 个答案:

答案 0 :(得分:0)

您将需要通过根package.json使应用程序意识到这一点。

确认正确配置了本地模块package.json

例如:

{
  "name": "foo", 
  "version": "0.0.1"
}

然后,只需将软件包作为项目依赖项保存到根模块中即可通过NPM。

npm install --save file:other_paths/foo

然后,您应该可以在项目中的任何位置引用模块,而无需相对路径。