2017-05-19 101 views
6

我正在開發一個用於響應native的按鈕ui包。我嘗試構建一個示例項目來測試此按鈕。目錄結構如下:React Native:npm鏈接本地依賴項,無法解析模塊

my-button/ 
    package.json 
    index.js 
    example/ 
     package.json 
     index.js 

我嘗試使用npm link

cd my-button 
npm link 

cd example 
npm link my-button 

example/node_modules/我可以看到我的按鈕符號鏈接,VSCode還可以在我的按鈕包自動完成功能。

但執行示例應用程序會顯示錯誤:

Unable to resolve module my-button ... 
Module does not exist in the module map or in these directories: ... 

但在錯誤信息的路徑是正確的。

不知道我錯在哪裏,或者在React-Native有沒有什麼特殊的方式來處理鏈接本地依賴?

我也試過npm install file:../.。它以這種方式正常工作,但在編輯我的按鈕後不易更新example/中的依賴關係。

+0

你最終找到了一個解決這個或不作出反應原住民不支持本地npm包? –

回答

-1

更改您的package.json

//... 
"dependencies": { 
    //... 
    "my-button" : "file:../" 
    }, 
//... 
+0

我已經試過這個方法了,這種方式將整個項目複製到'example/node_modules',而不僅僅是一個符號鏈接。更新依賴關係並不方便。 –

0

遇到同樣的問題。雖然我不能讓npm link的工作,因爲它應該,我的工作圍繞它通過在項目文件夾

npm install ../<package-folder> --save 

這將安裝包像一個普通的包,但是從本地文件夾中安裝的本地包。 不足之處在於您對包裹所做的更改不會反映出來。每次更改後您都必須登錄npm install

1

npm link命令不起作用,因爲React Native打包程序doesn't support symlinks

經過一番研究,我發現有兩種方法可以解決這個問題。

  1. 使用haul packager在示例應用程序。拖延支持符號鏈接,所以你可以照常使用npm link
  2. 通過file:../使用本地依賴關係,然後編輯node_modules文件夾中的文件或每次進行更改時重新安裝。

我發現Haul爲這個用例工作的偉大,甚至建立一個little starter project還包括storybook,這是如果你有很多的組件之間進行切換真的很有幫助。

0

嘗試運行

npm run watch 

按鈕包內。目前,我正在使用它將庫中的更改應用到我的主項目中。請讓我知道它是否有效!

1

嘗試WMLhttps://github.com/wix/wml

這是對npm link替代實際拷貝從源代碼更改的文件到目標文件夾

# add the link to wml using `wml add <src> <dest>` 
wml add ~/my-package ~/main-project/node_modules/my-package 

# start watching all links added 
wml start