3

在一个 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在为开发打包或为生产打包时如何使用来查找包?

4

1 回答 1

-1

您需要通过您的根package.json文件让您的应用程序知道它。

确认的本地模块已基本package.json配置。

例如:

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

确保包有一个 index.js 并且它有一些导出或导出默认值。

例如,在底部index.js

export default foo;

然后,只需将包保存为根模块中的项目依赖项即可通过 NPM。要执行此操作并将其自动安装到您的系统node_modules中,您可以使用此命令。

npm install --save file:other_paths/foo

请注意确保您拥有从常规项目 package.json模块的正确相对路径package.json

例如,在这种情况下,它将是:

app/                          # a React-Native project root
  |- other_paths/  
  |   |- foo/
  |      |- package.json      # new module package json
  |      |- index.js
  |- src/
  |   |- bar/
  |       |- bar.js
  |- package.json             # project package json

如果设置正确,您应该能够在项目中的任何位置引用该模块,而无需相对路径。

import Foo from 'foo';

于 2018-07-28T15:56:50.903 回答