JS

时间:2018-08-31 12:44:38

标签: javascript reactjs babeljs

我正在构建一个包含可重用组件的程序包,我想将其发布到NPM。

.babelrc

{
  "presets": ["es2015", "react"]
}

.eslintrc

{
  root: true,
  parser: 'babel-eslint',
  plugins: [/*'import', */'jsx-a11y', 'react'],
env: {
    browser: true,
    commonjs: true,
    es6: true,
    jest: true,
    node: true
  },
parserOptions: {
    ecmaVersion: 6,
    sourceType: 'module',
    ecmaFeatures: {
      jsx: true,
      generators: true,
      experimentalObjectRestSpread: true
    }
  },
settings: {
    'import/ignore': [
      'node_modules',
      '\\.(json|css|jpg|png|gif|eot|otf|webp|svg|ttf|woff|woff2|mp4|webm)$',
    ],
    'import/extensions': ['.js'],
    'import/resolver': {
      node: {
        extensions: ['.js', '.json']
      }
    }
  }
}

package.json

{
  "devDependencies": {
    "babel-cli": "^6.26.0",
    "babel-preset-es2015": "^6.24.1",
    "babel-preset-react": "^6.24.1"
  },
  "dependencies": {
    "react": "^16.4.2"
  }
}

我希望能够像这样var x = {...this.props}来“解压缩” JS对象,但是在运行构建脚本时,它卡在了...this.props部分。

我需要翻译什么语法?

1 个答案:

答案 0 :(得分:2)

您可以考虑使用transform object rest spread plugin。在usage部分中了解如何将其添加到Babel配置中。您可以像这样将其添加到.babelrc中:

{
  "presets": ["es2015", "react"],
  "plugins": ["transform-object-rest-spread"]
}

当前Babel版本中的“舞台”预设为deprecated

虽然babel-preset-env 可能也提供了此功能,但它并不是针对您所问问题的需求–尽管我同意您至少应该这样做,但它具有更广泛的用例考虑一下。进一步了解here