Move babel-preset-env-standalone to the monorepo. (#6438)

This commit is contained in:
Artem Yavorsky
2017-11-15 17:50:36 +02:00
committed by Brian Ng
parent 287b485d0e
commit 262d7518bd
14 changed files with 372 additions and 117 deletions

View File

@@ -0,0 +1,36 @@
@babel/preset-env-standalone
=================
@babel/preset-env-standalone is a standalone build of [@babel/preset-env](https://babeljs.io/docs/plugins/preset-env) for use in non-Node.js environments, including browsers.
Installation
============
There are several ways to use @babel/preset-env-standalone. Pick whichever one you like:
- Use it via UNPKG: https://unpkg.com/@babel/preset-env-standalone@7/babel-preset-env.min.js. This is a simple way to embed it on a webpage without having to do any other setup.
- Install via NPM: `npm install --save @babel/preset-env-standalone`
- Manually grab `babel-preset-env.js` and/or `babel-preset-env.min.js`:
* Download archived source code from the [GitHub releases page](https://github.com/babel/babel/releases).
* Unpack it.
* Grab `babel-preset-env.js` and/or `babel-preset-env.min.js` from the `experimental/babel-preset-env-standalone`.
Usage
=====
Load `babel-preset-env.js` or `babel-preset-env.min.js` in your environment, **along with babel-standalone**. This is important: You need to load Babel too! It will be registered as an available preset of the @babel/standalone.
Then, just use it like any other preset:
```js
Babel.transform(code, {
presets: [
["@babel/preset-env", {
"targets": {
"browsers": "last 1 safari version"
},
useBuiltIns: "usage"
}]
]
});
```

View File

@@ -0,0 +1,38 @@
{
"name": "@babel/preset-env-standalone",
"version": "7.0.0-beta.5",
"description": "Standalone build of babel-prest-env for use in non-Node.js environments.",
"main": "babel-preset-env.js",
"files": [
"babel-preset-env.js",
"babel-preset-env.min.js",
"src"
],
"devDependencies": {
"@babel/plugin-transform-new-target": "7.0.0-beta.5",
"@babel/preset-env": "7.0.0-beta.5",
"@babel/standalone": "7.0.0-beta.5",
"mock-require": "^2.0.2"
},
"keywords": [
"babel",
"babel-preset-env",
"babeljs",
"6to5",
"transpile",
"preset",
"standalone",
"transpiler"
],
"license": "MIT",
"bugs": {
"url": "https://github.com/babel/babel/issues"
},
"homepage": "https://github.com/babel/babel/packages/babel-preset-env-standalone#readme",
"jest": {
"transformIgnorePatterns": [
"/node_modules/",
"babel-preset-env.js"
]
}
}

View File

@@ -0,0 +1,13 @@
import { availablePlugins, registerPlugin } from "@babel/standalone";
const notIncludedPlugins = {
"transform-new-target": require("@babel/plugin-transform-new-target"),
};
Object.keys(notIncludedPlugins).forEach(pluginName => {
if (!availablePlugins[pluginName]) {
registerPlugin(pluginName, notIncludedPlugins[pluginName]);
}
});
export default availablePlugins;

View File

@@ -0,0 +1 @@
module.exports = {};

View File

@@ -0,0 +1,8 @@
/* global VERSION */
import { registerPreset } from "@babel/standalone";
import babelPresetEnv from "@babel/preset-env";
registerPreset("env", babelPresetEnv);
export const version = VERSION;

View File

@@ -0,0 +1,57 @@
const assert = require("assert");
const mock = require("mock-require");
const Babel = require("@babel/standalone/babel");
mock("Babel", Babel);
require("../babel-preset-env");
describe("babel-preset-env-standalone", () => {
it("works w/o targets", () => {
const output = Babel.transform("const a = 1;", {
presets: ["env"],
}).code;
assert.equal(output, "var a = 1;");
});
it("doesn't transpile `const` with chrome 60", () => {
const output = Babel.transform("const a = 1;", {
presets: [
[
"env",
{
targets: {
chrome: 60,
},
},
],
],
}).code;
assert.equal(output, "const a = 1;");
});
it("transpiles `const` with chrome 60 and preset-es2015", () => {
const output = Babel.transform("const a = 1;", {
presets: [
[
"env",
{
targets: {
chrome: 60,
},
},
],
"es2015",
],
}).code;
assert.equal(output, "var a = 1;");
});
it("uses transform-new-targets plugin", () => {
const output = Babel.transform("function Foo() {new.target}", {
presets: ["env"],
}).code;
assert.equal(
output,
"function Foo() {\n this instanceof Foo ? this.constructor : void 0;\n}",
);
});
});