【问题标题】:Creating an NPM package that enables ES6 imports to cherry pick exports创建一个 NPM 包,使 ES6 导入到樱桃挑选导出
【发布时间】:2016-12-23 08:30:23
【问题描述】:

在构建 NPM 包时,如何创建能够支持樱桃采摘单独导出以节省 Webpack、Rollup 或 Browserify 包大小的构建?

首选语法是:

import { myModuleOne, myModuleTwo } from 'my-npm-package';

或者

import myModuleOne from 'my-npm-package/myModuleOne';
import myModuleTwo from 'my-npm-package/myModuleTwo';

【问题讨论】:

  • 使用 require 因为 Node.js 还不支持 ES6 模块。
  • @str 但是 webpack 和 Rollup 可以。
  • @Gothdo 当然,在开发时。但是你不应该(不能?)发布带有 ES6 模块的 NPM 包,因为并非所有包用户都可能使用 webpack 或 Rollup。
  • @str 你可以创建一个UMD包并在package.json中设置为main,以及一个ES模块包并在package.json中设置为module

标签: javascript webpack ecmascript-6 babeljs rollupjs


【解决方案1】:

只需使用 ES6 导出:

export const myModuleOne = ...
export const myModuleTwo = ...

package.json 中将module 属性设置为你的包的路径:

{
  main: 'path/to/umd/bundle.js',
  module: 'path/to/es/bundle.js',
  ...
}

Rollup 和 webpack 2 具有 tree-shaking,因此生成的包将只包含您需要的模块。

【讨论】:

  • 请您详细解释一下。
猜你喜欢
  • 2019-05-01
  • 2012-03-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-11-21
  • 2017-02-26
相关资源
最近更新 更多