1.25.2 • Published 4 years ago

@huzan/hz-lib v1.25.2

Weekly downloads
36
License
MIT
Repository
-
Last release
4 years ago

@huzan/hz-lib

安装

npm install @huzan/hz-lib -g
npm install @huzan/hz-lib

Config

根目录下新建 .local.hzrc.lib.js 本地配置文件进行配置(不要上传 git)。

比如:

module.exports = {
    runLibs: ['@huzan/hz-dialog'], //每次要跑的项目(优先使用)
}

新建 .hzrc.lib.js 文件进行配置。

比如:

export default {
    entry: ['src/index.js'],
    cjs: 'rollup',
    esm: 'rollup',
    runtimeHelpers: true,
    packagesPatterns: ['packages/*'],
}

Options

entry

指定入口文件。

  • Type: string | string[]
  • Default:src/index.js

注:事实上,我们会依次找 src/index.tsx, src/index.ts, src/index.jsx, src/index.js,如果存在,则会作为默认的 entry。如果库文件为 typescript,则需要在根目录配置tsconfig.json,否则会编译错误。

file

指定输出文件。

  • Type: string
  • Default: 与 entry 相同的文件名,esm 会加 .esm.js 后缀,umd 会加 .umd[.min].js 后缀

注:

  1. entry 为数组时,不可配置 file,因为不能多个 entry 输出到同一个文件
  2. 为不同 entry 指定不同的输出文件名时,可通过 overridesByEntry 实现

esm

是否输出 esm 格式,以及指定 esm 格式的打包方式等。

  • Type: "rollup" | "babel" | { type, file, mjs } | false
  • Default: false

esm 为 rollupbabel 时,等同于配置了 { type: "rollup" | "babel" }

esm.type

指定 esm 的打包类型,可选 rollupbabel

  • Type: "rollup" | "babel"
  • Default: undefined

esm.file

指定 esm 的输出文件名。

  • Type: string
  • Default: undefined

esm.mjs

是否同时输出一份给浏览器用的 esm,以 .mjs 为后缀。

  • Type: boolean
  • Default: false

注:

  1. mjs 目前不通用,除非你知道这是什么,否则不要配置。

esm.minify

是否压缩 esm 格式。

  • Type: boolean
  • Default: false

通常不需要配置,除非你发布到 npm 的代码需要保密。

cjs

是否输出 cjs 格式,以及指定 cjs 格式的打包方式等。

  • Type: "rollup" | "babel" | { type, file } | false
  • Default: false

cjs 为 rollupbabel 时,等同于配置了 { type: "rollup" | "babel" }

cjs.type

指定 cjs 的打包类型,可选 rollupbabel

  • Type: "rollup" | "babel"
  • Default: undefined

cjs.file

指定 cjs 的输出文件名。

  • Type: string
  • Default: undefined

cjs.minify

是否压缩 cjs 格式。

  • Type: boolean
  • Default: false

通常不需要配置,除非你发布到 npm 的代码需要保密。

umd

是否输出 umd 格式,以及指定 umd 的相关配置。

  • Type: { globals, name, minFile, file } | false
  • Default: false

umd.globals

指定 rollup 的 globals 配置。

umd.name

指定 rollup 的 name 配置。

  • Type: string
  • Default: ${camelCase(basename(pkg.name))}

umd.minFile

是否为 umd 生成压缩后的版本。

  • Type: boolean
  • Default: false

umd.file

指定 umd 的输出文件名。

  • Type: string
  • Default: undefined

autoprefixer

配置参数传给 autoprefixer,详见 autoprefixer#options,常用的有 flexboxbrowsers

比如:

export default {
    autoprefixer: {
        browsers: ['ie>8', 'Safari >= 6'],
    },
}

cssModules

配置是否开启 css modules。

  • Type: boolean
  • Default: false

默认是 .module.css 走 css modules,.css 不走 css modules。配置 cssModulestrue 后,全部 css 文件都走 css modules。(less 文件同理)

extraBabelPresets

配置额外的 babel preset。

  • Type: array
  • Default: []

extraBabelPlugins

配置额外的 babel plugin。

  • Type: array
  • Default: []

比如配置 babel-plugin-import 按需加载 antd,

export default {
    extraBabelPlugins: [
        [
            'babel-plugin-import',
            {
                libraryName: 'antd',
                libraryDirectory: 'es',
                style: true,
            },
        ],
    ],
}

extraPostCSSPlugins

配置额外的 postcss plugin。

  • Type: array
  • Default: []

target

配置是 node 库还是 browser 库,只作用于语法层。

  • Type: "node" | "browser"
  • Default: "browser"

如果为 node,兼容到 node@6;如果为 browser,兼容到 ['last 2 versions', 'IE 10'],所以肯定会是 es5 的语法。

runtimeHelpers

是否把 helper 方法提取到 @babel/runtime 里。

  • Type: boolean
  • Default: false

注:

  1. 推荐开启,能节约不少尺寸
  2. 配置了 runtimeHelpers,一定要在 dependencies 里有 @babel/runtime 依赖
  3. runtimeHelpers 只对 esm 有效,cjs 下无效,因为 cjs 已经不给浏览器用了,只在 ssr 时会用到,无需关心小的尺寸差异

replace

配置需要替换的内容,基于 rollup-plugin-replace

  • Type: Object
  • Default: {}

注:

  1. babel 模式下暂不支持
  2. 如果要输出字符串,值的部分用 JSON.stringify() 转下

比如:

export default {
  replace: {
    VERSION: JSON.stringify(require('./package').version),
  },
},

overridesByEntry

根据 entry 覆盖配置。

比如要为不同的 entry 配置不同的输出文件名,

export default {
    entry: ['foo.js', 'bar.js'],
    overridesByEntry: {
        'foo.js': {
            file: 'bar',
        },
        'bar.js': {
            file: 'foo',
        },
    },
}

overridesByEntry 里的配置会和外面的配置进行 shadow 合并,比如:

export default {
  umd: { globals: { jquery: 'window.jQuery' } }
  entry: ['foo.js', 'bar.js'],
  overridesByEntry: {
    'foo.js': {
      umd: { name: 'foo' },
    },
  },
}

foo.js 的 umd 配置为 { globals: { jquery: 'window.jQuery' }, name: 'foo' }

Bonus

一些小贴士:

  1. 通常只要配置 esm: "rollup" 就够了
  2. cjs 和 esm 支持 rollup 和 babel 两种打包方式,rollup 是跟进 entry 把项目依赖打包在一起输出一个文件,babel 是把 src 目录转化成 lib(cjs) 或 es(esm)
  3. 如果要考虑 ssr,再配上 cjs: "rollup"
  4. package.json 里配上 sideEffects: false | string[],会让 webpack 的 tree-shaking 更高效

关于 dependencies、peerDependencies 和 external

  1. cjs 和 esm 格式打包方式选 rollup 时有个约定,dependencies 和 peerDependencies 里的内容会被 external
  2. esm.mjs 和 umd 格式,只有 peerDenendencies 会被 external
  3. 打包方式 babel 时无需考虑 external,因为是文件到文件的编译,不处理文件合并

关于 babel 模式

babel 模式下一些文件不会被编译到 es 和 lib 下,包含:

  • mdx 文件
  • 测试文件,比如 test.js、spec.js、e2e.js,后缀还支持 jsx、ts 和 tsx

License

MIT © LeoHuiyi

1.25.2

4 years ago

1.25.1

4 years ago

1.25.0

4 years ago

1.24.7

4 years ago

1.24.6

5 years ago

1.24.5

5 years ago

1.24.4

5 years ago

1.24.3

5 years ago

1.24.2

5 years ago

1.24.1

5 years ago

1.24.0

5 years ago

1.23.2

5 years ago

1.23.1

5 years ago

1.23.0

5 years ago

1.22.19

5 years ago

1.22.17

5 years ago

1.22.18

5 years ago

1.22.16

5 years ago

1.22.15

5 years ago

1.22.14

5 years ago

1.22.13

5 years ago

1.22.12

5 years ago

1.22.11

5 years ago

1.22.10

5 years ago

1.22.9

5 years ago

1.22.8

5 years ago

1.22.7

5 years ago

1.22.6

5 years ago

1.22.5

5 years ago

1.22.4

5 years ago

1.22.3

5 years ago

1.22.2

5 years ago

1.22.1

5 years ago

1.22.0

5 years ago

1.21.23

5 years ago

1.21.21

5 years ago

1.21.22

5 years ago

1.21.20

5 years ago

1.21.19

5 years ago

1.21.18

5 years ago

1.21.17

5 years ago

1.21.16

5 years ago

1.21.15

5 years ago

1.21.14

5 years ago

1.21.12

5 years ago

1.21.13

5 years ago

1.21.11

5 years ago

1.21.10

5 years ago

1.21.9

5 years ago

1.21.8

5 years ago

1.21.7

5 years ago

1.21.6

5 years ago

1.21.5

5 years ago

1.21.4

5 years ago

1.21.3

5 years ago

1.21.2

5 years ago

1.21.1

5 years ago

1.21.0

5 years ago

1.20.1

5 years ago

1.20.0

5 years ago

1.19.9

5 years ago

1.19.8

5 years ago

1.19.7

5 years ago

1.19.6

5 years ago

1.19.5

5 years ago

1.19.4

5 years ago

1.19.3

5 years ago

1.19.1

5 years ago

1.18.1

5 years ago

1.18.0

5 years ago

1.19.0

5 years ago

1.17.7

5 years ago

1.17.6

5 years ago

1.17.5

5 years ago

1.17.4

5 years ago

1.17.3

5 years ago

1.17.2

5 years ago

1.17.1

5 years ago

1.17.0

5 years ago

1.16.1

5 years ago

1.16.0

5 years ago

1.15.1

5 years ago

1.15.0

5 years ago

1.14.14

5 years ago

1.14.13

5 years ago

1.14.12

5 years ago

1.14.11

5 years ago

1.14.10

5 years ago

1.14.9

5 years ago

1.14.8

5 years ago

1.14.7

5 years ago

1.14.6

5 years ago

1.14.5

5 years ago

1.14.4

5 years ago

1.14.3

5 years ago

1.14.2

5 years ago

1.14.1

5 years ago

1.14.0

5 years ago

1.13.42

5 years ago

1.13.41

5 years ago

1.13.40

5 years ago

1.13.39

5 years ago

1.13.38

5 years ago

1.13.37

5 years ago

1.13.36

5 years ago

1.13.35

5 years ago

1.13.34

5 years ago

1.13.33

5 years ago

1.13.32

5 years ago

1.13.31

5 years ago

1.13.30

5 years ago

1.13.29

5 years ago

1.13.28

5 years ago

1.13.27

5 years ago

1.13.26

5 years ago

1.13.25

5 years ago

1.13.24

5 years ago

1.13.23

5 years ago

1.13.22

6 years ago

1.13.21

6 years ago

1.13.20

6 years ago

1.13.19

6 years ago

1.13.18

6 years ago

1.13.17

6 years ago

1.13.16

6 years ago

1.13.15

6 years ago

1.13.14

6 years ago

1.13.13

6 years ago

1.13.12

6 years ago

1.13.11

6 years ago

1.13.10

6 years ago

1.13.9

6 years ago

1.13.8

6 years ago

1.13.7

6 years ago

1.13.6

6 years ago

1.13.5

6 years ago

1.13.4

6 years ago

1.13.2

6 years ago

1.13.1

6 years ago

1.13.0

6 years ago

1.12.1

6 years ago

1.12.0

6 years ago

1.11.25

6 years ago

1.11.24

6 years ago

1.11.23

6 years ago

1.11.22

6 years ago

1.11.21

6 years ago

1.11.20

6 years ago

1.11.19

6 years ago

1.11.18

6 years ago

1.11.17

6 years ago

1.11.16

6 years ago

1.11.15

6 years ago

1.11.14

6 years ago

1.11.13

6 years ago

1.11.12

6 years ago

1.11.11

6 years ago

1.11.10

6 years ago

1.11.9

6 years ago

1.11.8

6 years ago

1.11.7

6 years ago

1.11.6

6 years ago

1.11.5

6 years ago

1.11.4

6 years ago

1.11.3

6 years ago

1.11.2

6 years ago

1.11.1

6 years ago

1.11.0

6 years ago

1.10.5

6 years ago

1.10.4

6 years ago

1.10.3

6 years ago

1.10.2

6 years ago

1.10.1

6 years ago

1.10.0

6 years ago

1.9.0

6 years ago

1.8.6

6 years ago

1.8.5

6 years ago

1.8.4

6 years ago

1.8.3

6 years ago

1.8.2

6 years ago

1.8.1

6 years ago

1.8.0

6 years ago

1.7.3

6 years ago

1.7.2

6 years ago

1.7.1

6 years ago

1.7.0

6 years ago

1.6.12

6 years ago

1.6.11

6 years ago

1.6.10

6 years ago

1.6.9

6 years ago

1.6.8

6 years ago

1.6.7

6 years ago

1.6.6

6 years ago

1.6.5

6 years ago

1.6.4

6 years ago

1.6.3

6 years ago

1.6.2

6 years ago

1.6.1

6 years ago

1.6.0

6 years ago

1.5.2

6 years ago

1.5.1

6 years ago

1.5.0

6 years ago

1.4.2

6 years ago

1.4.1

6 years ago

1.4.0

6 years ago

1.3.24

6 years ago

1.3.23

6 years ago

1.3.22

6 years ago

1.3.20

6 years ago

1.3.19

6 years ago

1.3.18

6 years ago

1.3.17

6 years ago

1.3.16

6 years ago

1.3.15

6 years ago

1.3.14

6 years ago

1.3.13

6 years ago

1.3.12

6 years ago

1.3.11

6 years ago

1.3.10

6 years ago

1.3.9

6 years ago

1.3.8

6 years ago

1.3.7

6 years ago

1.3.6

6 years ago

1.3.5

6 years ago

1.3.4

6 years ago

1.3.3

6 years ago

1.3.2

6 years ago

1.3.1

6 years ago

1.3.0

6 years ago

1.2.3

6 years ago

1.2.2

6 years ago

1.2.1

6 years ago

1.2.0

6 years ago

1.1.9

6 years ago

1.1.8

6 years ago

1.1.7

6 years ago

1.1.6

6 years ago

1.1.5

6 years ago

1.1.4

6 years ago

1.1.3

6 years ago

1.1.2

6 years ago

1.1.1

6 years ago

1.1.0

6 years ago

1.0.13

6 years ago

1.0.12

6 years ago

1.0.11

6 years ago

1.0.10

6 years ago

1.0.9

6 years ago

1.0.8

6 years ago

1.0.7

6 years ago

1.0.6

6 years ago

1.0.5

6 years ago

1.0.4

6 years ago

1.0.3

6 years ago

1.0.2

6 years ago

1.0.1

6 years ago

1.0.0

6 years ago