webpack 可以识别 node.js 和 es5 的语法,但是我要打包1个index.js,在index.js中使用了 es6的语法,在没有安装babel的情况下依旧打包成功了,这是为什么?
请各位大佬帮我解答一下。
index.js的内容:
//es6 语法
import Vue from 'vue'
import App from './app.vue'
const root = document.createElement("div");
document.body.appendChild(root);
new Vue({
render : (h) => h(App)
}).$mount(root)
webpack.config.js 的内容:
//webpack只支持es5的语法,使用commonjs的语法.
//node.js默认的库
const path = require('path')
const VueLoaderPlugin = require('vue-loader/lib/plugin')
//这个是node.js的写法 module.exports = {...}
module.exports = {
mode : 'development',
//入口
entry : path.join(__dirname,'src/index.js'),
//出口
output : {
filename : 'bundle.js',
path : path.join(__dirname,"dist")
},
module : {
rules : [
{
test : /.vue$/,
loader : 'vue-loader'
},
{
test : /.css$/,
loader : [
'style-loader',
'css-loader'
],
}
]
},
plugins : [
new VueLoaderPlugin(),
]
}
package.json 的内容:
{
"name": "vue-ssr-tech2",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo "Error: no test specified" && exit 1",
"build": "webpack --config webpack.config.js"
},
"author": "",
"license": "ISC",
"dependencies": {
"vue": "^2.5.21"
},
"devDependencies": {
"css-loader": "^2.1.0",
"style-loader": "^0.23.1",
"vue-loader": "^15.5.0",
"vue-template-compiler": "^2.5.21",
"webpack": "^4.28.3",
"webpack-cli": "^3.2.0"
}
}
本来就可以打包成功,你这里没有使用 uglify 压缩, uglify确实不支持 es6,才会报错
那为什么可以打包成功呢? webpack不是不支持es6语法吗?
根据我在网上查到资料,webpack是支持commonJS和es5语法,但是不支持es6,如果要支持es6,需要 引入babel,但是我在没有引入babel的情况下,依旧可以打包 一个含有es6语法的index.js文件,为什么可以打包成功呢?
@Jinke2017: 资料说不支持 es6,但是你打包成功了,所有资料有误