代码之家  ›  专栏  ›  技术社区  ›  punkrockbuddyholly

如何创建一个库,在需要时可以导入单个组件

  •  9
  • punkrockbuddyholly  · 技术社区  · 6 年前

    我也希望能够在其他项目中使用这个库。但是,我通常不想包括整个库,只想包括其中的一部分。

    因为库是使用es6导入/导出编写的,所以我可以将unbundled index.js文件作为依赖项包含在另一个项目中,然后 import { myFunc } from 'my-lib' 这个工作很好-我只有在我的项目打包时才能得到myFunc。

    但是,我遇到了一个问题,因为这些文件还没有被babel处理,因此包含es6代码,如arrow函数。我读过,如果你要出版一个图书馆,它不应该被最终用户公开。

    如何获取我的es6库并将其打包成这样一种方式:它是透明的,但也可以导入它的各个组件?我想要一个类似的情况,如何组织洛达斯。

    这不是最容易表达的事情,所以如果有什么不清楚的地方,请留下评论,我会编辑我的问题,试图澄清。

    1 回复  |  直到 5 年前
        1
  •  0
  •   Steven Spungin    6 年前

    我发现最好使用webpack创建两个模块。一个用于网络,一个用于节点。

    在您的节点构建中,您可以选择transpile,或者简单地将代码保存在ES6中,让库客户机决定。

    您的web构建可以树震动并删除未使用的代码。

    这是官方网页包片段( https://webpack.js.org/concepts/targets/ )

    const path = require('path');
    const serverConfig = {
      target: 'node',
      output: {
        path: path.resolve(__dirname, 'dist'),
        filename: 'lib.node.js'
      }
      //…
    };
    
    const clientConfig = {
      target: 'web', // <=== can be omitted as default is 'web'
      output: {
        path: path.resolve(__dirname, 'dist'),
        filename: 'lib.js'
      }
      //…
    };
    
    module.exports = [ serverConfig, clientConfig ];