es6不适用于我的自定义npm模块

时间:2017-05-06 09:05:51

标签: javascript node.js ecmascript-6 babeljs

我刚刚将一部分我的javascript应用程序(用Vue2和nuxt.js编写,但这并不重要)提取到外部npm包。

我的主要应用程序正在使用babel for es6代码,并且该程序包中编写的所有文件都使用es6语法。问题是 - 在将es6代码提取到外部npm模块后,uglifyjs开始抱怨他们的语法。错误表明uglify将它们视为常规javascript文件,而不是es6。

我如何告诉节点将我的包文件视为es6?

编辑:

很抱歉没有提供代码示例,但实际上没有太多要显示的内容。我有一个由nuxt.js / vue-cli生成器生成的常规webpack应用程序。它使用babelify和uglify使它能够使用es6 sytnax。所有主要应用程序都是使用es6编写的。

假设我将两个文件移动到外部模块 - AB(两者都在es6中)。模块A需要模块B,并且当uglify抱怨时 - B文件不是用es5编写的。似乎内部所需的模块由于某种原因没有首先被贬低。这是预期的行为吗?

1 个答案:

答案 0 :(得分:0)

解决方案很少,

一个是提到您提取的模块作为供应商的一部分,因此在webpack中您将拥有:

entry: {
    ...
    vendor: [
        'jquery', 
        'my-extracted-module'
    ]
},

并使用CommonsChunkPlugin

plugins: [
    new webpack.optimize.CommonsChunkPlugin({
        name: 'vendor',
        filename: 'vendor.js'
    })
]

my-extracted-module编译成独立的(你可以在它的package.json中使用es:next feature)

另一个解决方案是告诉webpack在构建时包含该包,请参阅

https://github.com/webpack/webpack/issues/2031