3 回答

TA貢獻1797條經驗 獲得超6個贊
然后呢:
var myModule = require.main.require('./path/to/module');
它需要的文件就好像是從主js文件中獲取的文件一樣,因此只要您的主js文件位于項目的根目錄下,它就可以很好地工作……這是我的感謝。

TA貢獻1893條經驗 獲得超10個贊
Browserify手冊中有一個非常有趣的部分:
避免../../../../../../ ..
并非應用程序中的所有內容都正確屬于公共npm,并且在許多情況下,設置私有npm或git repo的開銷仍然很大。這里有一些避免 ../../../../../../../相對路徑問題的方法。
node_modules
人們有時會反對將特定于應用程序的模塊放入node_modules中,因為在不從npm檢入第三方模塊的情況下,如何檢入內部模塊并不明顯。
答案很簡單!如果您有一個.gitignore忽略的文件node_modules:
node_modules
您可以!為每個內部應用程序模塊添加一個例外:
node_modules/*
!node_modules/foo
!node_modules/bar
請注意,您無法取消忽略一個子目錄,如果父已被忽略。所以,不是忽略的node_modules,你必須忽略每一個目錄內 node_modules與 node_modules/*技巧,然后您可以添加您的例外。
現在,在應用程序中的任何位置,您都可以擁有require('foo') 或require('bar')不擁有非常大且脆弱的相對路徑。
如果你有很多的模塊,并希望讓他們從NPM安裝的第三方模塊更獨立的,你可以把它們放在一個目錄下node_modules,例如node_modules/app:
node_modules/app/foo
node_modules/app/bar
現在,您將能夠require('app/foo')或require('app/bar') 在應用程序的任何地方。
在您的中.gitignore,只需添加一個例外node_modules/app:
node_modules/*
!node_modules/app
如果您的應用程序在package.json中配置了轉換,則您需要在您node_modules/foo或您的node_modules/app/foo組件目錄中創建一個單獨的package.json及其自己的轉換字段,因為轉換不會跨模塊邊界應用。這將使您的模塊對應用程序中的配置更改更健壯,并且更容易在應用程序外部獨立地重用軟件包。
符號鏈接
如果您正在開發可以進行符號鏈接并且不需要支持Windows的應用程序,則另一個方便的技巧是將lib/ 或app/文件夾符號鏈接到中node_modules。從項目根目錄執行以下操作:
ln -s ../lib node_modules/app
現在,您可以從項目中的任何位置lib/通過require('app/foo.js')獲取獲取文件lib/foo.js。
自定義路徑
您可能會看到一些地方談論使用$NODE_PATH 環境變量或opts.paths為節點添加目錄,并通過瀏覽器查找來查找模塊。
與大多數其他平臺不同,$NODE_PATH與有效使用node_modules目錄相比,在節點中使用路徑樣式的外殼樣式數組在節點中不那么理想。
這是因為您的應用程序與運行時環境配置之間的聯系更加緊密,因此有更多的活動部件,并且您的應用程序只有在正確設置環境后才能正常工作。
node和browserify都支持,但不鼓勵使用 $NODE_PATH。
- 3 回答
- 0 關注
- 623 瀏覽
添加回答
舉報