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 关注
- 586 浏览
添加回答
举报