如何强制特定包的转换

时间:2017-08-08 19:07:13

标签: javascript node.js babeljs

我正在使用react-boilerplate(dev),在执行npm run build:prod时出现以下错误

  

cross-env NODE_ENV =生产webpack --config   internals / webpack / webpack.prod.babel.js --color -p --progress   --display-reasons --display-modules

     

...

     

哈希:622954faf5a47209c873
  版本:webpack 2.6.1时间:18561ms

     

来自UglifyJs的0.ce0d924df6602f0a85c8.chunk.js中的错误意外   token:name(侦听器)[0.ce0d924df6602f0a85c8.chunk.js:1265,6]

     

...

代码部分是:

1261: "use strict";
1262: Object.defineProperty(__webpack_exports__, "__esModule", { value: true });
1263: /* harmony export (immutable) */ __webpack_exports__["default"] = createBroadcast;
1264: function createBroadcast (initialState) {
1265:   let listeners = {}
1266:   let id = 0
1267:   let _state = initialState

似乎这部分代码没有“编译”?

我目前有:

internals/webpack/webpack.base.babel.js

  {
    test: /\.js$/, // Transform all .js files required somewhere with Babel
    exclude: /node_modules/,
    use: {
      loader: 'babel-loader',
      options: options.babelQuery,
    },
  },

package.json

  "babel": {
    "plugins": [
      "styled-components"
    ],
    "presets": [
      [
        "env",
        {
          "modules": false
        }
      ],
      "react",
      "es2015",
      "es2016",
      "stage-0"
    ],
    "env": {
      "production": {
        "only": [
          "app"
        ],
        "plugins": [
          "transform-react-remove-prop-types",
          "transform-react-constant-elements",
          "transform-react-inline-elements"
        ]
      },
      "test": {
        "plugins": [
          "transform-es2015-modules-commonjs",
          "dynamic-import-node"
        ]
      }
    }

我也尝试过:

"presets": [
  [
    "env",
    {
      "modules": false,
      "targets": {
        "uglify": 2
      }
    }
  ],
  "es2015",
  "es2016",
  "stage-0",
  "react"
],

1 个答案:

答案 0 :(得分:1)

如果在node_modules中有ES6,那么一般方法是更改​​

exclude: /node_modules/

exclude: /node_modules\/(?:specificModule)/

以便排除除特定节点模块之外的所有节点模块。

此外,鉴于您的错误

   ./~/react-jss/lib/jss.js中的错误模块构建失败:ReferenceError:未知插件" transform-es3-member-expression-literals"在" xxxx / node_modules / react-jss / .babelrc"中指定在0`错误

您的选择有限。这意味着react-jss模块正在其npm包中发布它的.babelrc文件,出于这个原因不推荐这样做。该配置将尝试在该模块中的文件上运行,但该配置使用的是您尚未安装的插件,并且由于它们可能是react-jss中的devDependencies,因此无法正常安装

解决此错误的唯一方法是禁用.babelrc处理,或者在您自己的依赖项中显式安装该插件。两者都不是特别有吸引力。因此,在babelrc: false中传递babelQuery

{
  loader: 'babel-loader',
  options: options.babelQuery,
}

然后将您的Babel配置从其配置文件移到Webpack配置文件中。