Blame view

node_modules/babel-plugin-transform-es2015-modules-commonjs/README.md 3.3 KB
6a9ffbcc   liuqimichale   地图点击事件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
  # babel-plugin-transform-es2015-modules-commonjs
  
  > This plugin transforms ES2015 modules to [CommonJS](http://wiki.commonjs.org/wiki/Modules/1.1).
  >
  > #### Babel 6 Changes
  > 
  > Babel 6 changed some behavior by not doing `module.exports = exports['default']` anymore in the modules transforms.
  > 
  > There are some caveats, but you can use [babel-plugin-add-module-exports](https://www.npmjs.com/package/babel-plugin-add-module-exports), so that updating to Babel 6 isn't a breaking change since users that don't use ES modules don't have to do `require("your-module").default`.
  > 
  > However, it may not match how Node eventually implements ES modules natively given the [the current proposal](https://github.com/nodejs/node-eps/blob/master/002-es-modules.md#46-es-consuming-commonjs).
  
  ## Example
  
  **In**
  
  ```javascript
  export default 42;
  ```
  
  **Out**
  
  ```javascript
  Object.defineProperty(exports, "__esModule", {
    value: true
  });
  
  exports.default = 42;
  ```
  
  ## Installation
  
  ```sh
  npm install --save-dev babel-plugin-transform-es2015-modules-commonjs
  ```
  
  ## Usage
  
  ### Via `.babelrc` (Recommended)
  
  **.babelrc**
  
  ```js
  // without options
  {
    "plugins": ["transform-es2015-modules-commonjs"]
  }
  
  // with options
  {
    "plugins": [
      ["transform-es2015-modules-commonjs", {
        "allowTopLevelThis": true
      }]
    ]
  }
  ```
  
  ### Via CLI
  
  ```sh
  babel --plugins transform-es2015-modules-commonjs script.js
  ```
  
  ### Via Node API
  
  ```javascript
  require("babel-core").transform("code", {
    plugins: ["transform-es2015-modules-commonjs"]
  });
  ```
  
  ## Options
  
  ### `loose`
  
  `boolean`, defaults to `false`.
  
  As per the spec, `import` and `export` are only allowed to be used at the top
  level. When in loose mode these are allowed to be used anywhere.
  
  And by default, when using exports with babel a non-enumerable `__esModule` property
  is exported.
  
  ```javascript
  var foo = exports.foo = 5;
  
  Object.defineProperty(exports, "__esModule", {
    value: true
  });
  ```
  
  In environments that don't support this you can enable loose mode on `babel-plugin-transform-es2015-modules-commonjs`
  and instead of using `Object.defineProperty` an assignment will be used instead.
  
  ```javascript
  var foo = exports.foo = 5;
  exports.__esModule = true;
  ```
  
  ### `strict`
  
  `boolean`, defaults to `false`
  
  By default, when using exports with babel a non-enumerable `__esModule` property
  is exported. In some cases this property is used to determine if the import _is_ the
  default export or if it _contains_ the default export.
  
  ```javascript
  var foo = exports.foo = 5;
  
  Object.defineProperty(exports, "__esModule", {
    value: true
  });
  ```
  
  In order to prevent the `__esModule` property from being exported, you can set
  the `strict` option to `true`.
  
  ### `noInterop`
  
  `boolean`, defaults to `false`
  
  By default, when using exports with babel a non-enumerable `__esModule` property
  is exported. This property is then used to determine if the import _is_ the default
  export or if it _contains_ the default export.
  
  ```javascript
  "use strict";
  
  var _foo = require("foo");
  
  var _foo2 = _interopRequireDefault(_foo);
  
  function _interopRequireDefault(obj) {
    return obj && obj.__esModule ? obj : { default: obj };
  }
  ```
  
  In cases where the auto-unwrapping of `default` is not needed, you can set the
  `noInterop` option to `true` to avoid the usage of the `interopRequireDefault`
  helper (shown in inline form above).