fex-team / fis-parser-babel-6.x

a babel 6.x parser for fis
BSD 2-Clause "Simplified" License
15 stars 5 forks source link

解析 class 内部私有属性 或者 内部方法互相调用失败 #39

Closed PengDon closed 6 years ago

PengDon commented 6 years ago

例如: export class Util { doc = window.document; constructor() {} /**

babel 官网 试了下 需要 babel-preset-stage-2 支持。

修改fis-conf.js

    postprocessor: function (content, file, settings) {
        let babel = require('babel-core');
        let preset2015 = require('babel-preset-es2015');
        let presetstage2 = require('babel-preset-stage-2');
        let react = require('babel-preset-react');
        settings = fis.util.extend({
            presets: [
                preset2015,
                presetstage2,
                react
            ]
        }, settings);

        // 添加 jsx 的 html 语言能力处理
        if (fis.compile.partial && file.ext === '.jsx') {
            content = fis.compile.partial(content, file, {
                ext: '.html',
                isHtmlLike: true
            });
        }

        let result = babel.transform(content, settings);
        return result.code;
    },

修改 node_module 下的插件文件 var babel = require('babel-core'); var preset2015 = require('babel-preset-es2015'); // var presetstage3 = require('babel-preset-stage-3'); var presetstage2 = require('babel-preset-stage-2'); var react = require('babel-preset-react');

module.exports = function (content, file, conf) { // 添加 useBabel 配置项,如果 useBabel 为 false 则不进行编译 if (file.useBabel === false) { return content; }

conf = fis.util.extend({
    presets: [
        preset2015,
        presetstage2,
      //  presetstage3,
        react
    ]
}, conf);

// 添加 jsx 的 html 语言能力处理
if (fis.compile.partial && file.ext === '.jsx') {
    content = fis.compile.partial(content, file, {
        ext: '.html',
        isHtmlLike: true
    });
}

// 出于安全考虑,不使用原始路径
// conf.filename = file.subpath;

var result = babel.transform(content, conf);
return result.code;

};

都无法编译。