如何使用Babel在Rollup中设置Ramda(以使用ES6导入)

达勒

在提出问题之前,我想先共享项目的文件夹结构: 看这里。

我正在尝试将Ramda用作项目中的模块,以便在我的./app/js * .js文件中可以执行以下操作:

include map from 'ramda/src/map';

基本上,我希望能够轻松地将Ramda作为模块导入,以便可以访问如上所示的单独功能。我已经将ramda作为模块安装在node_modules目录中,并且我使用汇总来构建用ES6编写的js文件

我的rollup.config.js文件如下所示:

import babel from 'rollup-plugin-babel';
import eslint from 'rollup-plugin-eslint';
import commonjs from 'rollup-plugin-commonjs';

export default {
    entry: 'app/js/main.js',
    dest: 'app/min/main.min.js',
    format: 'iife',
    sourceMap: 'inline',
    plugins: [
        eslint({
            'exclude': [
                'app/css/**'
            ]
        }),
        babel(),
        commonjs({
            include: 'node_modules/**'
        })
    ]
};

我非常感谢有关如何正确设置它以在./app/js目录中使用它的一些建议如果问题不清楚,请告诉我。

谢谢。

达勒

我能够解决问题。用相同的设置。我要做的就是更改rollup.config.js配置更详细地讲,我遵循以下步骤:

  1. 安装了插件,rollup-plugin-node-resolve以允许汇总服务第三者模块访问项目文件(例如,Ramda在node_modules中):

    npm install --save-dev rollup-plugin-node-resolve
    
  2. 然后,我必须在以下内容中添加resolve一个依赖项rollup.config.js

    在文件的顶部放置:

    import resolve from 'rollup-plugin-node-resolve';
    
  3. plugins使用以下参数数组内调用resolve方法

    //...code before
    resolve({
        jsnext: true,
        browser: true,
        main: true,
        preferBuiltins: false
    }),
    //...code after
    
  4. 排除node_modules来自babel和包括一切commonjs以确保模块传递到项目作为依赖关系:

    //...code before
    babel({
        exclude: "node_modules/**",
        runtimeHelpers: false
    }),
    commonjs({
        include: 'node_modules/**'
    }) 
    //...code after
    

rollup.config.js文件最后看起来像这样:

import babel from 'rollup-plugin-babel';
import eslint from 'rollup-plugin-eslint';
import commonjs from 'rollup-plugin-commonjs';
import resolve from 'rollup-plugin-node-resolve';

export default {
    entry: 'app/js/main.js',
    dest: 'app/min/main.min.js',
    format: 'iife',
    sourceMap: 'inline',
    plugins: [
        resolve({
            jsnext: true,
            browser: true,
            main: true,
            preferBuiltins: false
        }),
        eslint({
            'exclude': [
                'app/css/**'
            ]
        }),
        babel({
            exclude: "node_modules/**",
            runtimeHelpers: false
        }),
        commonjs({
            include: 'node_modules/**'
        })
    ]

};

最后对我有用。./app/js/目录中的任何文件中,我都可以从Ramda导入特定功能,如下所示:

import {default as map} from 'ramda/src/map'; 

此外,在完成上述步骤之后,我还能够安装和集成这个令人惊叹的插件,从而使导入特定功能更加容易-babel-plugin-ramda

然后,您可以以更简单的方式导入特定功能:

import {map, curry} from 'ramda'

多亏了该插件,仅提供了指定的功能。

希望这对遇到过相同问题的任何人有所帮助,或者将来会帮助那些遇到相同问题的人。

干杯。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

是否可以使用ES6 / Babel进行多类导入?

如何设置Karma + Jasmine以使用ES6模块

如何使用ES6语法导入firebase-functions和firebase-admin以使用Babel进行Node 10的编译

如何知道是否可以使用ES6导入语法导入npm包?

使用Webpack和Babel的ES6动态导入

如何使用ES6语法导入类?(没有Babel)

如何使用ES6导入图像

使用Babel 7运行Mocha 6 ES6测试,如何设置?

如何使用ES6导入重新导入模块

我可以使用ES6 / 2015模块导入在“全局”范围内设置引用吗?

如何使用Node JS设置Babel 6以在服务器端代码中使用ES6?

使用Babel扩展ES6中的内置本机

如果我使用babel-polyfill,可以使用Typescript定位ES6吗?

如何使用Babel在ES6中编写与CommonJS,AMD和Browser兼容的模块?

使用ES6导出课程(Babel)

如何在连字符中使用ES6导入

如何使用ES6从文件导入jQuery

如何使用Jest模拟ES6模块导入?

如何使用ES6语法导入jquery?

如何在节点中使用es6导入?

如何测试使用jsdom导入jQuery的ES6模块

如何使用ES6导入(客户端JS)

如何使用ES6模块导入jQuery Masonry?

如何使用ES6语法导入pg-promise?

导入类并使用带有Babel Transpiler的es6模块调用静态方法

JS:在客户端(ES6或使用Babel)上启用导出/导入?

在ES6 + babel中使用bluebird承诺导入的类(构造函数)

React,使用Browserify,babel和gulp进行ES6编译,发布导入组件

使用es6和babel-node从根目录导入节点模块