05月17, 2018

rollup常用配置

说起来,认识这个词已经很久了,但基本上没有下水玩过。

这次后面在改jssdk时,后端说要用crypto这个js库,然后我就github找了一下,找到了crypto-js。它除了bower的方式,似乎没办法拿到一个完整的js文件。

所以就有了rollup的使用场景。(之前有提过,rollup比较适合类库,所以就没有用webpack)

先看一下最后的配置吧:

import babel from 'rollup-plugin-babel';
import resolve from 'rollup-plugin-node-resolve';
import commonjs from 'rollup-plugin-commonjs';
import uglify from 'rollup-plugin-uglify';
import builtins from 'rollup-plugin-node-builtins';
import globals from 'rollup-plugin-node-globals';

let isDev = process.env.NODE_ENV === "development" ? true : false; 

let babelConfig = {
  "presets": [
    [
      "env", {
        "modules": false,
        "targets": {
          "browsers": ["chrome > 40", "safari >= 7"]
        }
      }
    ]
  ],
};

export default {
  input : './src/index.js',
  watch: {
    exclude: 'node_modules/**'
  },
  output : {
    file: isDev ? './dist/warden-analytic.js' : "./dist/warden-analytic.min.js",
    name: 'WardenCollection',
    format: 'umd',
    sourcemap: true
  },
  plugins : [
    resolve(),
    commonjs(),
    babel({
      babelrc: false,
      presets: babelConfig.presets,
      plugins: babelConfig.plugins,
      exclude: 'node_modules/**' // only transpile our source code
    }),
    globals(),
    builtins(),
    (!isDev && uglify({
        compress: {
            pure_funcs: ['console.log']
        }
    })),
  ]
};

rollup默认对node模块不友好,需要rollup-plugin-node-resolve这个插件来搞定。

rollup-plugin-commonjs是用来解决有些node模块并不是基于es6 module,而是commonjs的规范。

rollup-plugin-node-builtins和下面的一个包,是用来使用node的内置包的,如util、buffer等。

在项目中,本来考虑使用node中的crypto模块,但是不行,最终会报错:

alt

google一下,搜索到这个,表示看的有些半懂。最终还是放弃了,使用了前面提到的crypto-js

本文链接:www.my-fe.pub/post/rollup-common-basic.html

-- EOF --

Comments

评论加载中...

注:如果长时间无法加载,请针对 disq.us | disquscdn.com | disqus.com 启用代理。