From 5da856de46f99c74b6e1c5d5870a29ec1b3a989d Mon Sep 17 00:00:00 2001 From: Neal Lubin Date: Wed, 10 May 2017 11:28:16 -0400 Subject: [PATCH] Use rollup instead of webpack for bundling the library --- .gitignore | 1 + .npmignore | 2 +- config/helpers.js | 5 ---- config/webpack.common.js | 63 ---------------------------------------- package.json | 21 +++++++++----- rollup.config.js | 29 ++++++++++++++++++ src/index.js | 1 + src/utilities.js | 2 -- 8 files changed, 46 insertions(+), 78 deletions(-) delete mode 100644 config/helpers.js delete mode 100644 config/webpack.common.js create mode 100644 rollup.config.js diff --git a/.gitignore b/.gitignore index f71f113..20d3e2d 100644 --- a/.gitignore +++ b/.gitignore @@ -2,3 +2,4 @@ npm-debug.log node_modules dist +lib diff --git a/.npmignore b/.npmignore index bc09c36..1723817 100644 --- a/.npmignore +++ b/.npmignore @@ -1,9 +1,9 @@ .idea npm-debug.log node_modules -example config release.js _config.yml .npmignore .gitignore +rollup.config.js diff --git a/config/helpers.js b/config/helpers.js deleted file mode 100644 index 349a672..0000000 --- a/config/helpers.js +++ /dev/null @@ -1,5 +0,0 @@ -const path = require('path'); - -const _root = path.resolve(__dirname, '..'); - -exports.root = (...args) => path.join(...[_root].concat(args)); diff --git a/config/webpack.common.js b/config/webpack.common.js deleted file mode 100644 index b9ab624..0000000 --- a/config/webpack.common.js +++ /dev/null @@ -1,63 +0,0 @@ -const webpack = require('webpack'); -const helpers = require('./helpers'); -const pkg = require('../package.json'); - -const banner = `servable v${pkg.version} -${pkg.homepage} -@author ${pkg.author}`; - -module.exports = { - entry: { - 'index': './src/index.js', - 'index.min': './src/index.js', - }, - - devtool: 'source-map', - - output: { - path: helpers.root('dist'), - filename: '[name].js', - chunkFilename: '[id].chunk.js', - libraryTarget: 'umd', - library: 'Servable', - umdNamedDefine: true, - }, - - performance: { - hints: false - }, - - resolve: { - extensions: ['*', '.js'], - modules: [helpers.root('node_modules')], - }, - resolveLoader: { - modules: [helpers.root('node_modules')] - }, - - module: { - loaders: [ - { - test: /\.js?$/, - exclude: /(node_modules)/, - use: { - loader: 'babel-loader', - options: { - presets: [['es2015', {modules: false, loose: true}], 'stage-0'], - } - }, - include: helpers.root('src') - }, - ] - }, - - plugins: [ - new webpack.BannerPlugin(banner), - new webpack.optimize.UglifyJsPlugin({ - include: /\.min\.js$/, - minimize: true, - sourceMap: true, - mangle: true, - }), - ] -}; diff --git a/package.json b/package.json index a6aea41..f3df136 100644 --- a/package.json +++ b/package.json @@ -2,10 +2,13 @@ "name": "servable", "version": "0.2.0", "description": "From scratch observable", - "main": "dist/index.js", + "main": "lib/index.js", + "module": "src/index.js", + "jsnext:main": "src/index.js", "scripts": { "test": "echo \"Error: no test specified\" && exit 0", - "build": "rm -rf dist && webpack --config config/webpack.common.js", + "build": "rimraf lib dist && buba src -o lib && rollup -c && uglifyjs dist/index.js -c \"warnings=false\" --comments -m -o dist/index.min.js --verbose", + "watch": "rollup -c -w", "release": "node release.js" }, "repository": { @@ -19,13 +22,17 @@ }, "homepage": "https://github.com/maniator/servable#readme", "devDependencies": { - "babel-core": "^6.24.1", - "babel-loader": "^7.0.0", - "babel-preset-es2015": "^6.24.1", - "babel-preset-stage-0": "^6.24.1", + "buba": "^4.0.2", "inquirer": "^3.0.6", + "rimraf": "^2.6.1", + "rollup": "^0.41.6", + "rollup-plugin-buble": "^0.15.0", + "rollup-plugin-license": "^0.3.0", + "rollup-plugin-node-resolve": "^3.0.0", + "rollup-plugin-sizes": "^0.3.0", + "rollup-watch": "^3.2.2", "semver": "^5.3.0", "shelljs": "^0.7.7", - "webpack": "^2.4.1" + "uglify-js": "^3.0.3" } } diff --git a/rollup.config.js b/rollup.config.js new file mode 100644 index 0000000..130663a --- /dev/null +++ b/rollup.config.js @@ -0,0 +1,29 @@ +import buble from 'rollup-plugin-buble'; +import nodeResolve from 'rollup-plugin-node-resolve'; +import sizes from 'rollup-plugin-sizes'; +import license from 'rollup-plugin-license'; + +const pkg = require('./package.json'); + +const banner = `servable v${pkg.version} +${pkg.homepage} +@author ${pkg.author} +@preserve`; + +export default { + entry: 'src/index.js', + dest: 'dist/index.js', + format: 'umd', + moduleName: 'Servable', + sourceMap: true, + plugins: [ + buble(), + sizes(), + license({ + banner, + }), + nodeResolve({ + jsnext: true + }) + ] +} diff --git a/src/index.js b/src/index.js index d7440f1..35e8045 100644 --- a/src/index.js +++ b/src/index.js @@ -4,6 +4,7 @@ export * from './Subject'; export * from './Observer'; export * from './utilities'; +export * from './utilities/makeHot'; // add on operators export * from './operators'; diff --git a/src/utilities.js b/src/utilities.js index a805379..4f2fd2e 100644 --- a/src/utilities.js +++ b/src/utilities.js @@ -1,7 +1,5 @@ export const noop = () => null; -export * from './utilities/makeHot'; - export const isPromise = (p) => p !== null && typeof p === 'object' && typeof p.then === 'function'; export const isObservable = (o$) => o$ !== null && typeof o$ === 'object' && typeof o$.subscribe === 'function';