From d75139a059e69ef12b962b1b0c7abf3bffd86e40 Mon Sep 17 00:00:00 2001 From: Sebastian McKenzie Date: Tue, 20 Jan 2015 00:56:09 +1100 Subject: [PATCH] add 6to5-runtime build process #535 --- .gitignore | 1 + .npmignore | 1 + CHANGELOG.md | 2 ++ Makefile | 21 +++++++----- bin/6to5-runtime | 4 --- lib/6to5/file.js | 8 +---- lib/6to5/index.js | 2 -- lib/6to5/runtime-generator.js | 35 -------------------- package.json | 3 +- packages/6to5-runtime/package.json | 6 ++++ packages/README.md | 6 ++++ packages/build-runtime.js | 53 ++++++++++++++++++++++++++++++ 12 files changed, 83 insertions(+), 59 deletions(-) delete mode 100755 bin/6to5-runtime delete mode 100644 lib/6to5/runtime-generator.js create mode 100644 packages/6to5-runtime/package.json create mode 100644 packages/README.md create mode 100644 packages/build-runtime.js diff --git a/.gitignore b/.gitignore index def6e13976..e733e929eb 100644 --- a/.gitignore +++ b/.gitignore @@ -11,3 +11,4 @@ test/tmp coverage dist .package.json +packages/6to5-runtime/*.js diff --git a/.npmignore b/.npmignore index 97d91a42da..34a941b95c 100644 --- a/.npmignore +++ b/.npmignore @@ -12,3 +12,4 @@ CHANGELOG.md .package.json coverage vendor +packages diff --git a/CHANGELOG.md b/CHANGELOG.md index caaccdebd2..3f0bfd8f4a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -18,6 +18,8 @@ _Note: Gaps between patch versions are faulty/broken releases._ * Caching is now always enabled for the require hook. It also now no longer caches require resolutions. * `ignoreRegex` fallback has now been dropped from the require hook. `register(/foo/);`, `register({ ignoreRegex: /foo/ })` -> `register({ ignore: /foo/ })`. * Optional fast transformer backwards compatibility support has been removed. Use [loose mode](https://6to5.org/docs/usage/loose). + * Removed the optional runtime in favor of the `selfContained` transformer. + * Removed the `coreAliasing` transformer in favor of `selfContained`. ## 2.13.3 diff --git a/Makefile b/Makefile index 5ceff1b52e..b382a43200 100644 --- a/Makefile +++ b/Makefile @@ -7,7 +7,7 @@ MOCHA_CMD = node_modules/mocha/bin/_mocha export NODE_ENV = test -.PHONY: clean test test-cov test-clean lint test-travis test-simple test-all test-browser publish build bootstrap publish-core +.PHONY: clean test test-cov test-clean lint test-travis test-simple test-all test-browser publish build bootstrap publish-core publish-runtime build: mkdir -p dist @@ -20,9 +20,6 @@ build: node $(BROWSERIFY_CMD) lib/6to5/browser.js -s to5 >dist/6to5.js node $(UGLIFY_CMD) dist/6to5.js >dist/6to5.min.js - node bin/6to5-runtime >dist/runtime.js - node $(UGLIFY_CMD) dist/runtime.js >dist/runtime.min.js - rm -rf templates.json clean: @@ -78,7 +75,6 @@ publish: make build cp dist/6to5.min.js browser.js cp dist/polyfill.min.js browser-polyfill.js - cp dist/runtime.min.js runtime.js node bin/cache-templates test -f templates.json @@ -87,19 +83,26 @@ publish: git push --follow-tags - # generate + make publish-core + make publish-runtime + + rm -rf templates.json browser.js browser-polyfill.js + +publish-runtime: + cd packages; \ + node build-runtime.js; \ + npm publish + +publish-core: bin/generate-core-package-json >package2.json mv package.json .package.json mv package2.json package.json npm publish - # restore rm -rf package.json mv .package.json package.json - rm -rf templates.json browser.js runtime.js browser-polyfill.js - bootstrap: npm install git submodule update --init diff --git a/bin/6to5-runtime b/bin/6to5-runtime deleted file mode 100755 index facf53f46c..0000000000 --- a/bin/6to5-runtime +++ /dev/null @@ -1,4 +0,0 @@ -#!/usr/bin/env node - -var runtime = require("../lib/6to5/runtime-generator"); -console.log(runtime(process.argv[2])); diff --git a/lib/6to5/file.js b/lib/6to5/file.js index 7f42be0951..e2ca2ac9f5 100644 --- a/lib/6to5/file.js +++ b/lib/6to5/file.js @@ -42,12 +42,6 @@ File.helpers = [ "get" ]; -File.excludeHelpersFromRuntime = [ - "async-to-generator", - "typeof", - "tagged-template-literal-loose" -]; - File.normaliseOptions = function (opts) { opts = _.cloneDeep(opts || {}); @@ -214,7 +208,7 @@ File.prototype.addHelper = function (name) { var ref; var runtimeNamespace = this.opts.runtime; - if (runtimeNamespace && !_.contains(File.excludeHelpersFromRuntime, name)) { + if (runtimeNamespace) { name = t.identifier(t.toIdentifier(name)); return t.memberExpression(t.identifier(runtimeNamespace), name); } else { diff --git a/lib/6to5/index.js b/lib/6to5/index.js index 79a33a1f0b..e7876de5de 100644 --- a/lib/6to5/index.js +++ b/lib/6to5/index.js @@ -9,8 +9,6 @@ exports.version = require("../../package").version; exports.types = require("./types"); -exports.runtime = require("./runtime-generator"); - exports.register = function (opts) { var register = require("./register"); if (opts != null) register(opts); diff --git a/lib/6to5/runtime-generator.js b/lib/6to5/runtime-generator.js deleted file mode 100644 index fa44638215..0000000000 --- a/lib/6to5/runtime-generator.js +++ /dev/null @@ -1,35 +0,0 @@ -"use strict"; - -var generator = require("./generation/generator"); -var util = require("./util"); -var File = require("./file"); -var t = require("./types"); -var _ = require("lodash"); - -module.exports = function (namespace) { - namespace = t.identifier(t.toIdentifier(namespace || "to5Runtime")); - - var body = []; - var container = t.functionExpression(null, [t.identifier("global")], t.blockStatement(body)); - var tree = t.program([t.expressionStatement(t.callExpression(container, [util.template("self-global")]))]); - - body.push(t.variableDeclaration("var", [ - t.variableDeclarator( - namespace, - t.assignmentExpression("=", t.memberExpression(t.identifier("global"), namespace), t.objectExpression([])) - ) - ])); - - _.each(File.helpers, function (name) { - if (_.contains(File.excludeHelpersFromRuntime, name)) { - return; - } - - var key = t.identifier(t.toIdentifier(name)); - body.push(t.expressionStatement( - t.assignmentExpression("=", t.memberExpression(namespace, key), util.template(name)) - )); - }); - - return generator(tree).code; -}; diff --git a/package.json b/package.json index 0bcce27ea4..be1fd879c5 100644 --- a/package.json +++ b/package.json @@ -9,8 +9,7 @@ "main": "lib/6to5/index.js", "bin": { "6to5": "./bin/6to5/index.js", - "6to5-node": "./bin/6to5-node", - "6to5-runtime": "./bin/6to5-runtime" + "6to5-node": "./bin/6to5-node" }, "browser": { "./lib/6to5/index.js": "./lib/6to5/browser.js", diff --git a/packages/6to5-runtime/package.json b/packages/6to5-runtime/package.json new file mode 100644 index 0000000000..17ff6029d0 --- /dev/null +++ b/packages/6to5-runtime/package.json @@ -0,0 +1,6 @@ +{ + "name": "6to5-runtime", + "description": "6to5 selfContained runtime", + "version": "2.13.3", + "author": "Sebastian McKenzie " +} \ No newline at end of file diff --git a/packages/README.md b/packages/README.md new file mode 100644 index 0000000000..32595312e8 --- /dev/null +++ b/packages/README.md @@ -0,0 +1,6 @@ +# What is this? + +This is a folder containing additional packages that are built whenever +a new version of 6to5 is released. + +**TODO:** Move `6to5-core` into here. diff --git a/packages/build-runtime.js b/packages/build-runtime.js new file mode 100644 index 0000000000..108c093769 --- /dev/null +++ b/packages/build-runtime.js @@ -0,0 +1,53 @@ +"use strict"; + +var transform = require("../lib/6to5/transformation/transform"); +var File = require("../lib/6to5/file"); +var util = require("../lib/6to5/util"); +var fs = require("fs"); +var t = require("../lib/6to5/types"); +var _ = require("lodash"); + +var relative = function (filename) { + return __dirname + "/6to5-runtime/" + filename; +}; + +var writeFile = function (filename, content) { + filename = relative(filename); + console.log(filename); + fs.writeFileSync(filename, content); +}; + +var readFile = function (filename) { + return fs.readFileSync(require.resolve(filename), "utf8"); +}; + +var updatePackage = function () { + var pkgLoc = relative("package.json"); + var pkg = require(pkgLoc); + + var mainPkg = require("../package.json"); + pkg.version = mainPkg.version; + + writeFile("package.json", JSON.stringify(pkg, null, 2)); +}; + +var buildHelpers = function () { + var body = []; + var tree = t.program(body); + + _.each(File.helpers, function (name) { + var key = t.identifier(t.toIdentifier(name)); + body.push(t.expressionStatement( + t.assignmentExpression("=", t.memberExpression(t.identifier("exports"), key), util.template(name)) + )); + }); + + return transform.fromAst(tree, null, { + optional: ["selfContained"] + }).code; +}; + +writeFile("helpers.js", buildHelpers()); +writeFile("core-js.js", readFile("core-js/library")); +writeFile("regenerator.js", readFile("core-js/library")); +updatePackage();