导入节点包中的文件,不包含 dist 文件夹名称

Pav*_*mar 14 javascript node.js npm typescript

我有以下库的目录结构,该库将由其他 Node js 项目导入。

\n
my-lib/\n\xe2\x94\x9c\xe2\x94\x80 dist/\n\xe2\x94\x82  \xe2\x94\x9c\xe2\x94\x80 index.js\n\xe2\x94\x82  \xe2\x94\x9c\xe2\x94\x80 foo.js\n\xe2\x94\x9c\xe2\x94\x80 src/\n\xe2\x94\x82  \xe2\x94\x9c\xe2\x94\x80 index.ts\n\xe2\x94\x82  \xe2\x94\x9c\xe2\x94\x80 foo.ts\n\xe2\x94\x9c\xe2\x94\x80 package.json\n\n
Run Code Online (Sandbox Code Playgroud)\n

我有以下 package.json

\n
{\n  "name": "my-lib",\n  "version": "1.0.0",\n  "description": "",\n  "main": "dist/index.js"\n}\n
Run Code Online (Sandbox Code Playgroud)\n

我已经指定maindist/index.js,所以如果我理解正确的话,从 index.ts (js) 导出的成员可以导入为import abc from 'my-lib'。如果我必须访问 foo.ts (js) 文件中导出的成员,那么我最终可能会这样做import foo from 'my-lib/dist/foo'。所以这里我必须指定dist导入路径中的文件夹名称。有没有办法指定仅'my-lib/foo'省略dist文件夹名称?(就像导入dist/index.js文件一样。)

\n

Tro*_*ott 19

这可以通过 package.json 中的子路径导出来完成。

  "main": "./dist/index.js",
  "exports": {
    ".": "./dist/index.js",
    "./foo": "./dist/foo.js"
  }
Run Code Online (Sandbox Code Playgroud)

  • 还支持 glob: "exports": { "./*": "./dist/*.js" }, (4认同)