• 使用rollup.js 输出js工程


      前段时间,突然想纯输出一个js文件,生成一个开发类库,之前一直用的webpack来打包,webpack比较常用一些开发项目打包,做代码分隔、静态资源导入等。如果一个项目单独的想输出js文件,有什么好的选择呢,这时候想到了rollup.js。

      那rollup有啥优点呢?众所周知,很多著名的框架如react、vue等都是通过rollup来打包构建的,rollup对于代码Tree-shaking 和ES6模块有着很好的支持,如果你的项目只是想输出一个js,那rollup是一个比较好的选择,相对于webpack,rollup也相对简单一些。下面将细讲如何用rollup来构建一个项目。

    一、快速搭建项目

    1.首先全局安装rollup

    npm i rollup -g

    2.使用npm init 项目名 构建项目

    3.添加一些依赖包,然后npm install

    "devDependencies": {
        "babel-plugin-external-helpers": "^6.22.0",
        "babel-preset-env": "^1.7.0",
        "babel-preset-es2015-rollup": "^3.0.0",
        "rollup": "^0.43.1",
        "rollup-plugin-babel": "^2.7.1",
        "rollup-plugin-commonjs": "^8.0.2",
        "rollup-plugin-json": "^2.3.0",
        "rollup-plugin-node-resolve": "^3.0.0",
        "rollup-plugin-uglify": "^2.0.1",
        "rollup-watch": "^4.0.0"
      }

    4.在根目录加上rollup.config.js配置文件

    import uglify from 'rollup-plugin-uglify'
    import resolve from 'rollup-plugin-node-resolve';
    import json from 'rollup-plugin-json';
    import babel from 'rollup-plugin-babel';
    
    
    export default {
        entry: 'src/index.js',
        format: 'iife',
        moduleName: 'FLOG',
        dest: 'dist/bundle.js',
        sourceMap: true,
        plugins: [
            resolve({
                // pass custom options to the resolve plugin
                customResolveOptions: {
                  moduleDirectory: 'node_modules'
                }
            }),
            babel({
              exclude: 'node_modules/**'
            }),
            json(),
            //uglify()
        ]
    }

    Rollup提供了多种打包方式,通过format属性可以设置你想要打包成的代码类型:

    • amd - 输出成AMD模块规则,RequireJS可以用

    • cjs - CommonJS规则,适合NodeBrowserifyWebpack 等

    • es - 默认值,不改变代码

    • iife - 输出自执行函数,最适合导入html中的script标签,且代码更小

    • umd - 通用模式,amd,cjs,iife都能用

    5.在package.json里加入指令,代表执行rollup.config.js配置文件。

    "scripts": {
        "build": "rollup -c",
        "dev": "rollup -c -w"
      },

    6.项目结构图

     7.开发中跑npm run dev 指令可以实现监控,跑npm run build指令可以打包输出js

    8.rollup有很好的tree-shaking机制,会把无用的变量跟方法过滤掉,使得代码更加精简。

      本文只是简单介绍了一下rollup,还有很多的功能可以参考下官方文档。

    本文末也推荐一篇比较好的文章

    https://mp.weixin.qq.com/s/S-WgcO9aFrYp2tvnMMsRPg

  • 相关阅读:
    Laravel 手动分页实现
    大话Web-Audio-Api
    关于audio标签播放跨域的问题
    jquery的命名空间
    正则表达式的应用
    七天学会ASP.NET MVC (六)——线程问题、异常处理、自定义URL 【转】
    七天学会ASP.NET MVC (五)——Layout页面使用和用户角色管理 【转】
    七天学会ASP.NET MVC (四)——用户授权认证问题 【转】
    七天学会ASP.NET MVC (三)——ASP.Net MVC 数据处理 【转】
    七天学会ASP.NET MVC (二)——ASP.NET MVC 数据传递 【转】
  • 原文地址:https://www.cnblogs.com/superSmile/p/14143614.html
Copyright © 2020-2023  润新知