首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将ES6表示的节点文件打包到单个节点模块中

将ES6表示的节点文件打包到单个节点模块中
EN

Stack Overflow用户
提问于 2016-06-01 14:34:04
回答 1查看 55关注 0票数 0

我有一组相互依赖的Node.js模块,我已经将它们构建为ES6模块,理想情况下,我希望能够指定一个模块作为入口点,并将这些模块(使用grunt)构建到一个Node应用程序所需的单个文件中。

grunt-babel似乎不能处理这个包装。

我知道browserify可以为浏览器做这件事,我也知道browserify可以包含Node模块,但我还不能弄清楚如何让browserify将单个模块入口点转换为需要的Node模块。

因此,如果我的源文件(和入口点) src/hello.js是:

代码语言:javascript
复制
import world from './world.js';
export default function () {console.log('Hello' + world + '!');};

src/world.js是:

代码语言:javascript
复制
export default 'world';

我希望它能够从一个普通的Node应用程序中使用它,比如:

代码语言:javascript
复制
var hw = require('./dest/hello-world.js');
hw();

我的grunt文件应该是什么样子的?

EN

回答 1

Stack Overflow用户

发布于 2016-06-02 05:14:42

原来我有两个问题:

在我的.babelrc文件中,我需要:

代码语言:javascript
复制
{
  "presets": ["es2015"],
  "plugins": ["add-module-exports"]
}

我需要的Grunt文件中的...whereas:

代码语言:javascript
复制
    browserify: {
        myNode: {
            options: {
                transform: [['babelify', {sourceMaps: true}]],
                browserifyOptions: {
                    standalone: 'dummyPlaceholder'
                }
                // Depending on your needs, you may also
                //  need `node: true` here or the options
                // in the 2nd argument of the `browserify` call
                // (as I required to allow GLOBAL.window = GLOBAL
                //  injection)
                // at https://github.com/substack/node-browserify/issues/1277#issuecomment-115198436
            },
            files: {
                'dist/<%= pkg.name%>-node.js': 'src/node.js'
            }
        }
    },

插件"add-module-exports"是必要的,以避免改变Babel,这需要像var mod = require('mod').default;这样的调用,而不仅仅是var mod = require('mod');

standalone属性实际上不是用来创建全局的,因为它是在模块环境中使用的(Node/CommonJS),但是该属性的存在是触发导出所必需的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37561111

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档