npm Javascript:在模块内部导出内容

rvpgvaaj  于 2023-06-06  发布在  Java
关注(0)|答案(2)|浏览(318)

在Java中,我们有四个可见性级别。除了publicprivate,我们有protected级别和一个默认级别(没有修饰符),也称为“package-local”或“package-private”
| 修饰符|班级| Package |子类|世界|
| - -----|- -----|- -----|- -----|- -----|
|公开| Y轴|Y轴|Y轴|Y轴|
|受保护| Y轴|Y轴|Y轴|X|
|无修饰符| Y轴|Y轴|X|X|
|私人| Y轴|X|X|X|
参见:https://www.programcreek.com/2011/11/java-access-level-public-protected-private/

**我特别需要Javascript中的“package-private”级别。**Javascript模块是否有类似的方法?

我正在写一个库(NPM包),我想export的东西(functionclass等),但不是在模块的公共API(由库的消费者使用)。只是在我的模块文件之间本地使用。

iaqfqrcu

iaqfqrcu1#

Breaking TypeScript NPM package into multiple files without exposing internal components
这似乎是一个诀窍:package.json定义了从npm包中实际导出的内容。所有内容仍然可以从项目中的任何地方导入,但导入是显式的。未通过package.json显式公开的内容不能从使用该包的其他项目导入。

wlwcrazw

wlwcrazw2#

Node.js中有一个**exports字段,定义在“package.json”**中:https://nodejs.org/api/packages.html#exports
它可以控制消费者可以导入哪些文件(以及如何导入)。它有很多选项,不幸的是没有记录在上述官方参考。
例如,参见"package.json" of my smart-color package

"exports": {
  "./*" : "./lib/*",
  "./Color" : "./lib/Color.js",
  "./ColorCustomInspect" : "./lib/ColorCustomInspect.js",
  "./convertors" : "./lib/convertors.js",
  "./luminance" : "./lib/luminance.js",
  "./luminanceInverter" : "./lib/luminanceInverter.js",
  "./recolorFilter" : "./lib/recolorFilter.js",
  "./web-colors" : "./lib/web-colors.js"
},

上面的配置使消费者能够import文件:"./lib/Color.js"这样:

import Color from 'smart-color/Color' // Not from '.../lib/Color[.js]'

作为其他示例,参见"package.json" of dotenv package"package.json" of server-only package

相关问题