3 回答

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

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