From dbe48b515751e18e5247de91bdc0d859db6ce1c4 Mon Sep 17 00:00:00 2001 From: Henry Zhu Date: Tue, 30 Aug 2016 17:56:04 -0400 Subject: [PATCH] init data (#1) --- experimental/babel-preset-env/.gitignore | 39 +--- experimental/babel-preset-env/.npmignore | 3 + experimental/babel-preset-env/README.md | 49 +++++ experimental/babel-preset-env/package.json | 82 +++++++++ experimental/babel-preset-env/src/index.js | 201 +++++++++++++++++++++ 5 files changed, 338 insertions(+), 36 deletions(-) create mode 100644 experimental/babel-preset-env/.npmignore create mode 100644 experimental/babel-preset-env/README.md create mode 100644 experimental/babel-preset-env/package.json create mode 100644 experimental/babel-preset-env/src/index.js diff --git a/experimental/babel-preset-env/.gitignore b/experimental/babel-preset-env/.gitignore index 5148e527a7e2..2d8091eae916 100644 --- a/experimental/babel-preset-env/.gitignore +++ b/experimental/babel-preset-env/.gitignore @@ -1,37 +1,4 @@ -# Logs -logs -*.log -npm-debug.log* - -# Runtime data -pids -*.pid -*.seed - -# Directory for instrumented libs generated by jscoverage/JSCover -lib-cov - -# Coverage directory used by tools like istanbul -coverage - -# nyc test coverage -.nyc_output - -# Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files) -.grunt - -# node-waf configuration -.lock-wscript - -# Compiled binary addons (http://nodejs.org/api/addons.html) -build/Release - -# Dependency directories node_modules -jspm_packages - -# Optional npm cache directory -.npm - -# Optional REPL history -.node_repl_history +lib +.DS_Store +*.log diff --git a/experimental/babel-preset-env/.npmignore b/experimental/babel-preset-env/.npmignore new file mode 100644 index 000000000000..47cdd2c65551 --- /dev/null +++ b/experimental/babel-preset-env/.npmignore @@ -0,0 +1,3 @@ +src +test +node_modules diff --git a/experimental/babel-preset-env/README.md b/experimental/babel-preset-env/README.md new file mode 100644 index 000000000000..cfb9ded1cafa --- /dev/null +++ b/experimental/babel-preset-env/README.md @@ -0,0 +1,49 @@ +# babel-preset-env + +> Babel preset for all envs. + +## Install + +```sh +$ npm install --save-dev babel-preset-env +``` + +## Usage + +### Via `.babelrc` (Recommended) + +**.babelrc** + +```json +{ + "presets": ["env"] +} +``` + +### Via CLI + +```sh +$ babel script.js --presets env +``` + +### Via Node API + +```javascript +require("babel-core").transform("code", { + presets: ["env"] +}); +``` + +## Options + +* `loose` - Enable "loose" transformations for any plugins in this preset that allow them (Disabled by default). + +``` +{ + presets: [ + ["env", { + chrome: 49 + }] + ] +} +``` diff --git a/experimental/babel-preset-env/package.json b/experimental/babel-preset-env/package.json new file mode 100644 index 000000000000..8004ef0a21a9 --- /dev/null +++ b/experimental/babel-preset-env/package.json @@ -0,0 +1,82 @@ +{ + "name": "babel-preset-env", + "version": "1.0.0", + "description": "A Babel preset for each environment.", + "author": "Henry Zhu ", + "homepage": "https://babeljs.io/", + "license": "MIT", + "repository": "https://github.com/babel/babel-preset-env", + "main": "lib/index.js", + "scripts": { + "build": "babel src -d lib", + "dev": "babel -w src -d lib", + "lint": "eslint src test", + "fix": "eslint src test --fix", + "ci": "npm run lint && npm run test", + "prepublish": "npm run build" + }, + "dependencies": { + "babel-plugin-transform-es2015-modules-amd": "^6.8.0", + "babel-plugin-transform-es2015-modules-commonjs": "^6.6.0", + "babel-plugin-transform-es2015-modules-systemjs": "^6.12.0", + "babel-plugin-transform-es2015-modules-umd": "^6.12.0", + "babel-plugin-transform-es3-member-expression-literals": "^6.3.13", + "babel-plugin-transform-es3-property-literals": "^6.3.13", + "babel-plugin-transform-proto-to-assign": "^6.9.0", + "babel-plugin-transform-es5-property-mutators": "^6.3.13", + "babel-plugin-check-es2015-constants": "^6.3.13", + "babel-plugin-transform-es2015-arrow-functions": "^6.3.13", + "babel-plugin-transform-es2015-block-scoped-functions": "^6.3.13", + "babel-plugin-transform-es2015-block-scoping": "^6.6.0", + "babel-plugin-transform-es2015-classes": "^6.6.0", + "babel-plugin-transform-es2015-computed-properties": "^6.3.13", + "babel-plugin-transform-es2015-destructuring": "^6.6.0", + "babel-plugin-transform-es2015-duplicate-keys": "^6.6.0", + "babel-plugin-transform-es2015-for-of": "^6.6.0", + "babel-plugin-transform-es2015-function-name": "^6.3.13", + "babel-plugin-transform-es2015-literals": "^6.3.13", + "babel-plugin-transform-es2015-object-super": "^6.3.13", + "babel-plugin-transform-es2015-parameters": "^6.6.0", + "babel-plugin-transform-es2015-shorthand-properties": "^6.3.13", + "babel-plugin-transform-es2015-spread": "^6.3.13", + "babel-plugin-transform-es2015-sticky-regex": "^6.3.13", + "babel-plugin-transform-es2015-template-literals": "^6.6.0", + "babel-plugin-transform-es2015-typeof-symbol": "^6.6.0", + "babel-plugin-transform-es2015-unicode-regex": "^6.3.13", + "babel-plugin-transform-regenerator": "^6.6.0", + "babel-plugin-transform-exponentiation-operator": "^6.8.0", + "babel-plugin-syntax-trailing-function-commas": "^6.13.0", + "babel-plugin-transform-async-to-generator": "^6.8.0", + "babel-plugin-transform-class-properties": "^6.11.5", + "babel-plugin-transform-decorators-legacy": "^1.3.4", + "babel-plugin-transform-do-expressions": "^6.8.0", + "babel-plugin-transform-export-extensions": "^6.8.0", + "babel-plugin-transform-function-bind": "^6.8.0", + "babel-plugin-transform-object-rest-spread": "^6.8.0" + }, + "devDependencies": { + "babel-cli": "^6.11.4", + "babel-eslint": "^6.1.2", + "babel-plugin-transform-flow-strip-types": "^6.8.0", + "eslint": "^3.3.1", + "eslint-config-babel": "^1.0.1", + "eslint-plugin-babel": "^3.3.0", + "eslint-plugin-flow-vars": "^0.5.0" + }, + "babel": { + "plugins": [ + "transform-class-properties", + "transform-flow-strip-types" + ] + }, + "eslint": { + "extends": "babel", + "parserOptions": { + "ecmaVersion": 7, + "sourceType": "module" + }, + "rules": { + "max-len": 0 + } + } +} diff --git a/experimental/babel-preset-env/src/index.js b/experimental/babel-preset-env/src/index.js new file mode 100644 index 000000000000..d7c6533265a6 --- /dev/null +++ b/experimental/babel-preset-env/src/index.js @@ -0,0 +1,201 @@ +// use if ie +// "es3-member-expression-literals", +// "es3-property-literals", +// "proto-to-assign", +// "es5-property-mutators", + +export const pluginsList = { + // es2015 + "transform-es2015-arrow-functions": { + edge: 13, + firefox: 45, + chrome: 49, + opera: 36, + }, + "transform-es2015-block-scoped-functions": { + edge: 11, + firefox: 46, + chrome: 41, + opera: 28, + }, + "transform-es2015-block-scoping": { + edge: 11, + firefox: 36, + chrome: 49, + opera: 36, + }, + "transform-es2015-classes": { + edge: 13, + firefox: 45, + chrome: 49, + opera: 36, + }, + "transform-es2015-computed-properties": { + edge: 12, + firefox: 34, + chrome: 44, + opera: 31 + }, + "check-es2015-constants": { + edge: 11, + firefox: 36, + chrome: 49, + opera: 36, + }, + "transform-es2015-destructuring": { + edge: 14, + firefox: Infinity, + chrome: 52, + opera: 39, + }, + "transform-es2015-for-of": { + edge: Infinity, + firefox: Infinity, + chrome: 51, + opera: 38, + }, + "transform-es2015-function-name": { + edge: Infinity, + firefox: Infinity, + chrome: 52, + opera: 39, + }, + "transform-es2015-literals": { + edge: 12, + firefox: 36, + chrome: 41, + opera: 28 + }, + "transform-es2015-object-super": { + edge: 13, + firefox: 45, + chrome: 49, + opera: 36, + }, + "transform-es2015-parameters": { + edge: 14, + firefox: Infinity, + chrome: 49, + opera: 36, + }, + "transform-es2015-shorthand-properties": { + edge: 12, + firefox: 33, + chrome: 43, + opera: 30 + }, + "transform-es2015-spread": { + edge: 13, + firefox: 36, + chrome: 46, + opera: 33, + }, + "transform-es2015-sticky-regex": { + edge: 13, + firefox: 31, + chrome: 49, + opera: 36 + }, + "transform-es2015-template-literals": { + edge: 13, + firefox: 34, + chrome: 41, + opera: 28, + }, + "transform-es2015-typeof-symbol": { + edge: 12, + firefox: 36, + chrome: 38, + opera: 25, + }, + "transform-es2015-unicode-regex": { + edge: 12, + firefox: 46, + chrome: 51, + opera: 38, + }, + "transform-regenerator": { + edge: 13, + firefox: 45, + chrome: 49, + opera: 36, + }, + + // es2016 + "transform-exponentiation-operator": { + edge: 14, + chrome: 52, + }, + + // es2017 + "transform-async-to-generator": { + edge: 14, + }, + "syntax-trailing-function-commas": { + edge: 14, + } +}; + +export const plugins = [ + "es3-member-expression-literals", + "es3-property-literals", + "proto-to-assign", + + "es5-property-mutators", + + // es2015 + "transform-es2015-arrow-functions", + "transform-es2015-block-scoped-functions", + "transform-es2015-block-scoping", + "transform-es2015-classes", + "transform-es2015-computed-properties", + "check-es2015-constants", + "transform-es2015-destructuring", + "transform-es2015-for-of", + "transform-es2015-function-name", + "transform-es2015-literals", + "transform-es2015-object-super", + "transform-es2015-parameters", + "transform-es2015-shorthand-properties", + "transform-es2015-spread", + "transform-es2015-sticky-regex", + "transform-es2015-template-literals", + "transform-es2015-typeof-symbol", + "transform-es2015-unicode-regex", + "transform-regenerator", + + // es2016 + "transform-exponentiation-operator", + + // es2017 + "transform-async-to-generator", + "syntax-trailing-function-commas" +]; + +// modules? +export const modules = [ + "transform-es2015-modules-amd", + "transform-es2015-modules-commonjs", + "transform-es2015-modules-systemjs", + "transform-es2015-modules-umd" +]; + +export const stagePlugins = [ + // "transform-class-constructor-call", proposal is removed + "transform-class-properties", + "transform-transform-decorators-legacy", // legacy plugin + "transform-do-expressions", + "transform-export-extensions", + "transform-function-bind", + "transform-object-rest-spread", +]; + +export default function(opts) { + let stage = 4; + if (opts !== undefined){ + if (opts.stage !== undefined) stage = opts.stage; + } + + if (typeof stage !== "boolean") throw new Error("Preset es2015 'loose' option must be a boolean."); + +}