【发布时间】:2018-02-15 08:55:27
【问题描述】:
我正在使用 npm、webpack 和 babel 在 es6 中编写我的库并进行转译 + 缩小。但是结果被转换为使用 Object (Object.defineProperty) 的 ecmaScript 5.1,但我的目标是不支持 Object 的 ecmaScript 5,或者如果发现其他限制,则降低 ecmaScript。 (我需要的javascript版本是Rhino中使用的那个。) (我的目标是犀牛1.7R3)
我的问题是,如何配置 babel 来做到这一点? 我发现了 polyfill,但我不确定如何使用它来实现我的目标。
babelrc
{ "presets": ["env"] }
webpack.config
module.exports = function(env, argv) {
env = env || {};
const webpack = require('webpack');
const UglifyJsPlugin = webpack.optimize.UglifyJsPlugin;
let libraryName = 'jsgmc';
let plugins = [], outputFile;
if (env.prod) {
plugins.push(new UglifyJsPlugin({minimize: true}));
outputFile = libraryName + '.min.js';
} else {
outputFile = libraryName + '.js';
}
return {
entry: __dirname + '/src/jsgmc.js',
devtool: 'source-map',
output: {
path: __dirname + '/dist',
filename: outputFile,
library: libraryName,
libraryTarget: 'this'
},
module: {
rules: [
{
test: /\.js$/,
exclude: /(node_modules|bower_components)/,
use: {
loader: 'babel-loader',
options: {
presets: ['babel-preset-env'],
plugins: [require('babel-plugin-add-module-exports')]
}
}
}
]
},
plugins: plugins
};
};
【问题讨论】:
-
嗯,只是想知道你为什么有这个要求?
Object.defineProperty有什么问题? -
@DanilGholtsman 因为我有一个基于 Rhino 构建的特定 FE 平台,我想创建函数库,可以被其他纯 javascript 或其他项目使用。
-
@DanilGholtsman 更准确地说,它必须符合旧版本的 Rhino,而不是实际版本,这就是为什么我需要 es5 而不是 es5.1
-
哦,我明白了,有趣的问题
标签: javascript npm webpack babeljs