1

实际上,我的库以这种方式导出要导入的资源:

import { fooComponent } from 'my-library/lib/components'
import { fooHook } from 'my-library/lib/hooks'

我需要改变什么才能以webpack.config.js这种方式导入我的资源?

import { fooComponent } from 'my-library/components'
import { fooHook } from 'my-library/hooks'

我的webpack.config.js

  ...
  entry: {
    components: './src/components/index.js',
    hooks: './src/hooks/index.js',
    index: './src/index.js',
    services: './src/services/index.js',
    templates: './src/templates/index.js'
  },
  ...
  output: {
    filename: '[name].js',
    globalObject: 'typeof self !== "undefined" ? self : this',
    library: 'my-library',
    libraryTarget: 'umd',
    path: path.join(fileRoot, 'lib'),
    umdNamedDefine: true
  },

修改path: path.join(fileRoot, 'lib')path: path.join(fileRoot, '')不是一个选项,因为我需要一个分发路径。

这可以使用 TypeScript 或 Webpack 解决这个问题吗?

4

1 回答 1

0

首先,这不是 Webpack 的问题。Webpack 将根据您的配置将所有内容捆绑在 中./lib/[name].js,这正是您想要的,因为您需要一个分发路径。所以 Webpack 的工作到此结束。

输入 的角色package.json,它定义了哪些包可用以及在哪里可用。让我们看一下两个不同的代码以及幕后发生的事情(过于简单化):

import lib from 'my-lib';

  1. 查找“node_modules/my-lib/package.json#main”中指定的脚本
  2. lib从此脚本中导入所有内容

import { someComponent } from 'my-lib/lib/components';

  1. 查找“node_modules/my-lib/lib/components.js , ornode_modules/my-lib/lib/components/index.js ”
  2. someComponent从此脚本导入

因此,似乎没有任何可能的包配置可以简单地允许您lib从导入中删除。但是,问题有那么大吗?这只是三个字母

于 2019-03-02T13:27:01.883 回答