diff --git a/.babelrc b/.babelrc index 27617a4..e4491c2 100644 --- a/.babelrc +++ b/.babelrc @@ -15,5 +15,6 @@ "es6.classes", "es6.destructuring" ], - "compact": false + "compact": false, + "sourceMap": true } diff --git a/CHANGELOG.md b/CHANGELOG.md index 29ffe1d..a40e6be 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,11 @@ # rollup changelog +## 0.20.2 + +* Handle errors in build config file +* More robust deconflicting, in cases where e.g. `foo$1` already exists +* Use Rollup CLI for own build process + ## 0.20.1 * Support `--config` file to enable plugins with CLI ([#226](https://github.com/rollup/rollup/pulls/226)) diff --git a/bin/runRollup.js b/bin/runRollup.js index 4870180..4c2e5e2 100644 --- a/bin/runRollup.js +++ b/bin/runRollup.js @@ -40,7 +40,12 @@ module.exports = function ( command ) { } }; - const options = require( path.resolve( config ) ); + try { + var options = require( path.resolve( config ) ); + } catch ( err ) { + handleError( err ); + } + execute( options, command ); require.extensions[ '.js' ] = defaultLoader; diff --git a/gobblefile.js b/gobblefile.js deleted file mode 100644 index 0eab8ef..0000000 --- a/gobblefile.js +++ /dev/null @@ -1,57 +0,0 @@ -var gobble = require( 'gobble' ); -var fs = require( 'fs' ); - -var version = require( './package.json' ).version; -var commitHash = (function () { - try { - return fs.readFileSync( '.commithash', 'utf-8' ); - } catch ( err ) { - return 'unknown'; - } -})(); - -var banner = fs.readFileSync( 'src/banner.js' ).toString() - .replace( '${version}', version ) - .replace( '${time}', new Date() ) - .replace( '${commitHash}', commitHash ); - -var src = gobble( 'src' ); - -var node = src - .transform( 'rollup-babel', { - entry: 'rollup.js', - dest: 'rollup.js', - format: 'cjs', - external: [ 'fs' ], - sourceMap: true, - banner: banner, - load: function ( id ) { - if ( ~id.indexOf( 'rollup.js' ) ) { - return fs.readFileSync( 'src/rollup.js', 'utf-8' ).replace( /<@VERSION@>/, version ); - } - } - }); - -var browserPlaceholders = { - fs: fs.readFileSync( 'browser/fs.js' ).toString(), - promise: fs.readFileSync( 'browser/promise.js' ).toString() -}; - -var browser = src - .transform( 'rollup-babel', { - entry: 'rollup.js', - dest: 'rollup.browser.js', - format: 'umd', - moduleName: 'rollup', - sourceMap: true, - banner: banner, - load: function ( id ) { - if ( ~id.indexOf( 'rollup.js' ) ) { - return fs.readFileSync( 'src/rollup.js', 'utf-8' ).replace( /<@VERSION@>/, version ); - } - if ( ~id.indexOf( 'fs.js' ) ) return browserPlaceholders.fs; - if ( ~id.indexOf( 'es6-promise' ) ) return browserPlaceholders.promise; - } - }); - -module.exports = gobble([ node, browser ]); diff --git a/package.json b/package.json index f0feea3..0cc3ed3 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "rollup", - "version": "0.20.1", + "version": "0.20.2", "description": "Next-generation ES6 module bundler", "main": "dist/rollup.js", "jsnext:main": "src/rollup.js", @@ -14,8 +14,9 @@ "test-coverage": "rm -rf coverage/* && istanbul cover --report json node_modules/.bin/_mocha -- -u exports -R spec test/test.js", "posttest-coverage": "remap-istanbul -i coverage/coverage-final.json -o coverage/coverage-remapped.json -b dist && remap-istanbul -i coverage/coverage-final.json -o coverage/coverage-remapped.lcov -t lcovonly -b dist && remap-istanbul -i coverage/coverage-final.json -o coverage/coverage-remapped -t html -b dist", "ci": "npm run test-coverage && codecov < coverage/coverage-remapped.lcov", - "build": "git rev-parse HEAD > .commithash && gobble build -f dist", - "prepublish": "npm test", + "build": "git rev-parse HEAD > .commithash && rollup -c -o dist/rollup.js", + "build:browser": "git rev-parse HEAD > .commithash && rollup -c rollup.config.browser.js -o dist/rollup.browser.js", + "prepublish": "npm test && npm run build:browser", "lint": "eslint src" }, "repository": { @@ -46,15 +47,13 @@ "es6-promise": "^3.0.2", "eslint": "^1.7.1", "estree-walker": "^0.2.0", - "gobble": "^0.10.1", - "gobble-babel": "^5.5.8", - "gobble-cli": "^0.6.0", - "gobble-rollup": "^0.10.0", - "gobble-rollup-babel": "^0.6.1", "istanbul": "^0.4.0", "magic-string": "^0.8.0", "mocha": "^2.3.3", "remap-istanbul": "^0.3.1", + "rollup": "^0.20.1", + "rollup-plugin-babel": "^1.0.0", + "rollup-plugin-npm": "^1.0.0", "rollup-plugin-replace": "^1.0.1", "sander": "^0.4.0", "source-map": "^0.5.3", diff --git a/rollup.config.browser.js b/rollup.config.browser.js new file mode 100644 index 0000000..ea673f6 --- /dev/null +++ b/rollup.config.browser.js @@ -0,0 +1,12 @@ +import config from './rollup.config.js'; + +config.plugins.push({ + load: function ( id ) { + if ( ~id.indexOf( 'fs.js' ) ) return readFileSync( 'browser/fs.js' ).toString(); + if ( ~id.indexOf( 'es6-promise' ) ) return readFileSync( 'browser/promise.js' ).toString(); + } +}); + +config.format = 'umd'; + +export default config; diff --git a/rollup.config.js b/rollup.config.js new file mode 100644 index 0000000..fa11307 --- /dev/null +++ b/rollup.config.js @@ -0,0 +1,43 @@ +import { readFileSync } from 'fs'; +import babel from 'rollup-plugin-babel'; +import npm from 'rollup-plugin-npm'; +import replace from 'rollup-plugin-replace'; + +var pkg = JSON.parse( readFileSync( 'package.json', 'utf-8' ) ); + +var commitHash = (function () { + try { + return readFileSync( '.commithash', 'utf-8' ); + } catch ( err ) { + return 'unknown'; + } +})(); + +var banner = readFileSync( 'src/banner.js', 'utf-8' ) + .replace( '${version}', pkg.version ) + .replace( '${time}', new Date() ) + .replace( '${commitHash}', commitHash ); + +export default { + entry: 'src/rollup.js', + format: 'cjs', + plugins: [ + babel({ + //include: [ 'src/**', 'node_modules/acorn/**' ] + }), + + npm({ + jsnext: true + }), + + replace({ + include: 'src/rollup.js', + delimiters: [ '<@', '@>' ], + sourceMap: true, + values: { 'VERSION': pkg.version } + }) + ], + external: [ 'fs' ], + banner: banner, + sourceMap: true +}; diff --git a/src/Bundle.js b/src/Bundle.js index 5b05cf6..dbe335a 100644 --- a/src/Bundle.js +++ b/src/Bundle.js @@ -93,8 +93,8 @@ export default class Bundle { keys( this.assumedGlobals ).forEach( name => used[ name ] = 1 ); function getSafeName ( name ) { - if ( used[ name ] ) { - return `${name}$${used[name]++}`; + while ( used[ name ] ) { + name += `$${used[name]++}`; } used[ name ] = 1;