Move babel-preset-env-standalone to the monorepo. (#6438)
This commit is contained in:
36
experimental/babel-preset-env-standalone/README.md
Normal file
36
experimental/babel-preset-env-standalone/README.md
Normal 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"
|
||||
}]
|
||||
]
|
||||
});
|
||||
```
|
||||
38
experimental/babel-preset-env-standalone/package.json
Normal file
38
experimental/babel-preset-env-standalone/package.json
Normal 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"
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -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;
|
||||
@@ -0,0 +1 @@
|
||||
module.exports = {};
|
||||
8
experimental/babel-preset-env-standalone/src/index.js
Normal file
8
experimental/babel-preset-env-standalone/src/index.js
Normal 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;
|
||||
@@ -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}",
|
||||
);
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user