npm库使用roullup封装经验总结

摘要:
持续更新。。。。

1.背景
最近要开发一个js类库,就学习和实践了下之前摸索的打包类库,过程都比较顺利,记录一下经验避免后面再踩坑。持续更新。。。。
2.工具版本
打包工具

"rollup": "^1.29.0",

压缩工具

"rollup-plugin-uglify": "^6.0.4"

图片加载工具

 "@rollup/plugin-image": "^2.0.6",

3.开发过程设计
3.1再对参数进行校验的时候,使用面向切面的思想,在函数执行前对参数进行校验,校验逻辑和功能逻辑分开;
4.优化经验
4.1 使用静态图片,可以使用在线工具压缩图片;
4.2 将图片转为base64可以存在js代码中,便于压缩;
4.3开发环境下不使用代码压缩差距,当打包为生产环境时再使用压缩插件;

5.代码
配置代码

import resolve from '@rollup/plugin-node-resolve';
import commonjs from '@rollup/plugin-commonjs';
import pkg from './package.json';
import postcss from 'rollup-plugin-postcss';
import { uglify } from 'rollup-plugin-uglify';
import requireContext from 'rollup-plugin-require-context';
import { eslint } from 'rollup-plugin-eslint';
import image from '@rollup/plugin-image';
const production = !process.env.ROLLUP_WATCH;
export default [
  {
    input : 'src/main.js',
    output: {
      name  : ‘libraryName',
      file  : pkg.browser,
      format: 'umd'
    },
    plugins: [
      image(),
      eslint({
        throwOnError  : true,
        throwOnWarning: true,
        include       : ['src/**/*.js'],
        exclude       : ['node_modules/**']
      }),
      requireContext(),
      production && uglify(),
      postcss({
        plugins: [
          require('autoprefixer')(
            {
              overrideBrowserslist: ['> 0.15% in CN']
            })
        ]  // 自动加css前缀
      }),
      resolve(), // so Rollup can find `ms`
      commonjs() // so Rollup can convert `ms` to an ES module
    ]
  },
  {
    input   : 'src/main.js',
    external: ['ms'],
    output  : [
      { file: pkg.main, format: 'cjs' },
      { file: pkg.module, format: 'es' }
    ]
  }
];


本文转自 https://blog.csdn.net/wo_buzhidao/article/details/116238396?spm=1001.2014.3001.5502,如有侵权,请联系删除。

免责声明:文章转载自《npm库使用roullup封装经验总结》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇C#字符串和ASCII码的转换Android Glide加载视频封面下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

随便看看

WritableWorkbook 详细用例 (转)

1WritableWorkbookworkbook=工作簿.createWorkbook(newFile(“d:\test.xls”));1Workbookwb=工作簿.getWorkbook(newFile(“src\test\test.xls”));...

转:(WIN)S04-CH01 PCIE XDMA开发环境搭建以及环路测试

XDMAIP使用部分教程分LINUX篇和WINDOWS篇两个部分。通过实战,面向应用,提供给大家XILINXFPGAPCIE应用解决方案。本教程以MK7160FA作为样机测试。这是一款高性价比的FPGA开发板。而M_AXI_LITE挂载的BRAM是需要进行BAR空间操作,所以地址设置为0x80000000...

wifi密码暴力破解

转自:Python最新暴力破解WiFi,攻破所有密码限制,最强破解!...

.NET Core前后端分离快速开发框架(Core.3.1+AntdVue)

.NET核心前后分离快速开发框架简介环境构建开发环境要求:基本数据库构建:数据库设计规范操作教程系统配置快速开发管理员登录系统用户管理系统角色管理权限管理界面密钥管理系统日志操作日志事务使用读写分离子数据库子表常见问题如何执行链接表查询如何切换数据库类型如何使用多个数字根据Ku的结论,时间真的很快,今年转眼就要过去了。因此,后端决定采用。NET Core 3...

MarkDown技巧:两种方式实现页内跳转

MarkDown技术:有两种方法可以跳转到页面上的电子邮件地址:JohnTsai.Work@gmail.com,欢迎交流讨论。我喜欢MarkDown简单直观的写作风格。...

adb(15)-刷机相关命令

以恢复模式下的更新为例:重新启动到恢复模式。通过adb上传和更新系统。...