如題
Uncaught SyntaxError: Unexpected token <
Uncaught SyntaxError: Unexpected token <
Uncaught SyntaxError: Unexpected token <
webpack配置如下:
base.js
const webpack = require("webpack");
const { resolve, join } = require("path");
const HtmlWebpackPlugin = require("html-webpack-plugin"); //主要有兩個(gè)作用:1、將打包后html文件引入script、link;2、創(chuàng)建一個(gè)模板頁(yè)的html入口文件
const CopyWebpackPlugin = require("copy-webpack-plugin"); // 在webpack中拷貝文件和文件夾
const ExtractTextPlugin = require("extract-text-webpack-plugin");
const CLIENT_FOLDER = resolve(__dirname, "./../");
const SERVER_FOLDER = resolve(__dirname, "./../server");
const nodeModulesPath = resolve(__dirname, "./../node_modules");
let config = {
devtool: "#cheap-module-eval-source-map", //默認(rèn)模式,便于從打包后的文件中找到子文件
entry: {
"modules/admin": [
"babel-polyfill",
CLIENT_FOLDER + "/src/modules/admin/app"
],
"modules/front": [
"babel-polyfill",
CLIENT_FOLDER + "/src/modules/front/entry-client"
]
},
output: { //這里的輸入好像被覆蓋了,等等回來(lái)看
path: CLIENT_FOLDER + "/dist",
filename: "[name].ymc.js",
publicPath: "/"
},
externals: { //將編輯器模塊排除
simplemde: "SimpleMDE"
},
plugins: [],
module: {
rules: [
{
test: /\.vue$/,
loader: "vue-loader",
options: {
loaders: {
less: [
"vue-style-loader",
"css-loader?minimize",
"less-loader"
],
css: ["vue-style-loader", "css-loader?minimize"]
},
preserveWhitespace: false,//默認(rèn)true,設(shè)置為 false,模版中 HTML 標(biāo)簽之間的空格將會(huì)被忽略
postcss: [
require("autoprefixer")({
browsers: ["last 7 versions"]
})
]
}
},
{
test: /\.js[x]?$/,
loader: "babel-loader",
exclude: nodeModulesPath,
query: {
presets: ['es2015']
}
},
{
test: /\.less$/,
use: ["style-loader", "css-loader?minimize", "less-loader"]
},
{
test: /\.css$/,
use: ["style-loader", "css-loader?minimize"]
},
{
//對(duì)圖片路徑進(jìn)行處理,超過(guò)小于10000轉(zhuǎn)base64
test: /\.(png|jpe?g|gif|svg)(\?.*)?$/,
loader: "url-loader",
options: {
limit: 10000,
name: "img/[name].[hash:7].[ext]"
}
},
{
test: /\.(woff2?|eot|ttf|otf)(\?.*)?$/,
loader: "url-loader",
options: {
limit: 10000,
name: "fonts/[name].[hash:7].[ext]"
}
}
]
},
resolve: {
extensions: [".js", ".vue", ".json"],
modules: [nodeModulesPath],
alias: {//設(shè)置別名,簡(jiǎn)化路徑!
vue$: "vue/dist/vue.esm.js",
vuex$: "vuex/dist/vuex.esm.js",
"vue-router$": "vue-router/dist/vue-router.esm.js",
simplemde$: "simplemde/dist/simplemde.min.js",
"highlight.js$": "highlight.js/lib/highlight.js",
fastclick: "fastclick/lib/fastclick.js",
}
},
cache: true,//默認(rèn)值,緩存webpack配置,提高打包速度
};
module.exports = config;
pro.js
const webpack = require("webpack");
const merge = require("webpack-merge"); //合并webpack配置
const { resolve, join } = require("path");
const CopyWebpackPlugin = require("copy-webpack-plugin");
const HtmlWebpackPlugin = require("html-webpack-plugin"); //設(shè)置Html模板文件的引入和配置
const ExtractTextPlugin = require("extract-text-webpack-plugin"); //將css文件從js中單獨(dú)抽離出來(lái)
const base = require("./webpack.base.config"); //基礎(chǔ)webpack配置文件
const CLIENT_FOLDER = resolve(__dirname, "./../");
const SERVER_FOLDER = resolve(__dirname, "./../server");
const nodeModulesPath = resolve(__dirname, "./../node_modules");
const productionEnv = process.env.NODE_ENV === "production" ? true : false;
let config = merge(base, {
plugins: [
new webpack.HotModuleReplacementPlugin(),
// 開(kāi)啟全局的模塊熱替換(HMR)
new webpack.NamedModulesPlugin(),
// 當(dāng)模塊熱替換(HMR)時(shí)在瀏覽器控制臺(tái)輸出對(duì)用戶(hù)更友好的模塊名字信息,
// 使模塊呈現(xiàn)相對(duì)路徑顯示
new HtmlWebpackPlugin({
filename: "admin.html",
template: CLIENT_FOLDER + "/src/modules/admin/index.html",
inject: "body",//js文件防止的位置,默認(rèn)true,參數(shù):true、body、head、false
chunks: productionEnv
? [
"modules/manifest_admin",
"modules/vendor_admin",
"modules/admin"
]
: ["modules/admin"],
minify: {
// 壓縮的方式;分別是移除注解、合并文檔中的空白、刪除可刪除的引號(hào)
removeComments: true,
collapseWhitespace: true,
removeAttributeQuotes: true,
}
//chunksSortMode: 'dependency'//chunks的插入順序
}),
new HtmlWebpackPlugin({
filename: "front.html",
template: CLIENT_FOLDER + "/src/modules/front/index.html",
inject: 'body',
chunks: productionEnv
? [
"modules/manifest_front",
"modules/vendor_front",
"modules/front"
]
: ["modules/front"],
minify: {
// 壓縮的方式
// removeComments: false,
collapseWhitespace: true,
removeAttributeQuotes: true,
}
//chunksSortMode: 'dependency'//決定了 script 標(biāo)簽的引用順序;默認(rèn)有四個(gè)選項(xiàng),'none', 'auto',
}),
// 配置提取出的樣式文件
new ExtractTextPlugin("css/[name].[contenthash].css"),//contenthash是extraTextPlugin插件避免引用其css的文件改動(dòng),css文件也被重新構(gòu)建,就是說(shuō)不改動(dòng)css,content文件是不會(huì)變的
new webpack.DefinePlugin({//創(chuàng)建編譯時(shí)的全局常量
"process.env.NODE_ENV": JSON.stringify(
process.env.NODE_ENV || "development"
),
"process.env.VUE_ENV": '"client"'
})
]
});
config.entry["modules/admin"].unshift(
"event-source-polyfill",
"webpack-hot-middleware/client?reload=true"
);
config.entry["modules/front"].unshift(
"event-source-polyfill",
"webpack-hot-middleware/client?reload=true"
);
if (process.env.NODE_ENV === "production") {
// 刪除devtool
delete config.devtool;
// 刪除webpack-hot-middleware
config.entry["modules/admin"].splice(0, 2);
config.entry["modules/front"].splice(0, 2);
config.output.filename = "[name].[chunkhash:8].min.js";//重置輸出目錄
// 提取css
config.module.rules[0].options.loaders = {
less:ExtractTextPlugin.extract({
use: [
{
loader: "css-loader",
options: {
minimize: true,
sourceMap: true
}
},
{
loader: "less-loader",
options: {
}
}
],
fallback: "vue-style-loader"
}),
css: ExtractTextPlugin.extract({
use: [
{
loader: "css-loader",
options: {
minimize: true,
sourceMap: true
}
}
],
fallback: "vue-style-loader"
})
};
// 刪除HotModuleReplacementPlugin和NamedModulesPlugin
config.plugins.shift();
config.plugins.shift();
config.plugins = config.plugins.concat([
new webpack.optimize.UglifyJsPlugin({
// 最緊湊的輸出
beautify: false,
// 刪除所有的注釋
comments: false,
compress: {
// 在UglifyJs刪除沒(méi)有用到的代碼時(shí)不輸出警告
warnings: false,
// 刪除所有的 `console` 語(yǔ)句
// 還可以兼容ie瀏覽器
drop_console: true,
// 內(nèi)嵌定義了但是只用到一次的變量
collapse_vars: true,
// 提取出出現(xiàn)多次但是沒(méi)有定義成變量去引用的靜態(tài)值
reduce_vars: true
}
}),
// 分別提取vendor、manifest
new webpack.optimize.CommonsChunkPlugin({
name: "modules/vendor_admin",
chunks: ["modules/admin"],
minChunks: function(module, count) {
return (
module.resource &&
/\.js$/.test(module.resource) &&
module.resource.indexOf(nodeModulesPath) === 0
);
}
}),
new webpack.optimize.CommonsChunkPlugin({
name: "modules/manifest_admin",
chunks: ["modules/vendor_admin"]
}),
new webpack.optimize.CommonsChunkPlugin({
name: "modules/vendor_front",
chunks: ["modules/front"],
minChunks: function(module, count) {
return (
module.resource &&
/\.js$/.test(module.resource) &&
module.resource.indexOf(nodeModulesPath) === 0
);
}
}),
new webpack.optimize.CommonsChunkPlugin({
name: "modules/manifest_front",
chunks: ["modules/vendor_front"]
}),
// copy static
// new CopyWebpackPlugin([
// {
// from: CLIENT_FOLDER + "/static",
// to: CLIENT_FOLDER + "/dist/static",
// ignore: [".*"]
// }
// ])
]);
}
// console.log(config);
module.exports = config;
北大青鳥(niǎo)APTECH成立于1999年。依托北京大學(xué)優(yōu)質(zhì)雄厚的教育資源和背景,秉承“教育改變生活”的發(fā)展理念,致力于培養(yǎng)中國(guó)IT技能型緊缺人才,是大數(shù)據(jù)專(zhuān)業(yè)的國(guó)家
北大青鳥(niǎo)中博軟件學(xué)院創(chuàng)立于2003年,作為華東區(qū)著名互聯(lián)網(wǎng)學(xué)院和江蘇省首批服務(wù)外包人才培訓(xùn)基地,中博成功培育了近30000名軟件工程師走向高薪崗位,合作企業(yè)超4
中公教育集團(tuán)創(chuàng)建于1999年,經(jīng)過(guò)二十年潛心發(fā)展,已由一家北大畢業(yè)生自主創(chuàng)業(yè)的信息技術(shù)與教育服務(wù)機(jī)構(gòu),發(fā)展為教育服務(wù)業(yè)的綜合性企業(yè)集團(tuán),成為集合面授教學(xué)培訓(xùn)、網(wǎng)
達(dá)內(nèi)教育集團(tuán)成立于2002年,是一家由留學(xué)海歸創(chuàng)辦的高端職業(yè)教育培訓(xùn)機(jī)構(gòu),是中國(guó)一站式人才培養(yǎng)平臺(tái)、一站式人才輸送平臺(tái)。2014年4月3日在美國(guó)成功上市,融資1
曾工作于聯(lián)想擔(dān)任系統(tǒng)開(kāi)發(fā)工程師,曾在博彥科技股份有限公司擔(dān)任項(xiàng)目經(jīng)理從事移動(dòng)互聯(lián)網(wǎng)管理及研發(fā)工作,曾創(chuàng)辦藍(lán)懿科技有限責(zé)任公司從事總經(jīng)理職務(wù)負(fù)責(zé)iOS教學(xué)及管理工作。
浪潮集團(tuán)項(xiàng)目經(jīng)理。精通Java與.NET 技術(shù), 熟練的跨平臺(tái)面向?qū)ο箝_(kāi)發(fā)經(jīng)驗(yàn),技術(shù)功底深厚。 授課風(fēng)格 授課風(fēng)格清新自然、條理清晰、主次分明、重點(diǎn)難點(diǎn)突出、引人入勝。
精通HTML5和CSS3;Javascript及主流js庫(kù),具有快速界面開(kāi)發(fā)的能力,對(duì)瀏覽器兼容性、前端性能優(yōu)化等有深入理解。精通網(wǎng)頁(yè)制作和網(wǎng)頁(yè)游戲開(kāi)發(fā)。
具有10 年的Java 企業(yè)應(yīng)用開(kāi)發(fā)經(jīng)驗(yàn)。曾經(jīng)歷任德國(guó)Software AG 技術(shù)顧問(wèn),美國(guó)Dachieve 系統(tǒng)架構(gòu)師,美國(guó)AngelEngineers Inc. 系統(tǒng)架構(gòu)師。