1 Star 0 Fork 9

q_qian/vue2_vue-router_bootstrap

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
webpack.config.allinone_bak多入口.js 6.02 KB
一键复制 编辑 原始数据 按行查看 历史
echozhangzy 提交于 2017-01-13 08:56 +08:00 . 备份入口配置写法
'use strict';
var webpack = require("webpack");
var path = require("path");
var glob = require('glob')
//路径定义
var srcDir = path.resolve(process.cwd(), 'src'); //process.cwd() 返回运行当前脚本的工作目录的路径
var distDir = path.resolve(process.cwd(), 'dist');
var nodeModPath = path.resolve(__dirname, './node_modules'); //__dirname 脚本的位置
var pathMap = require('./src/pathmap.json');
var publicPath = '/';
//插件定义
const CommonsChunkPlugin = webpack.optimize.CommonsChunkPlugin;
const HtmlWebpackPlugin = require('html-webpack-plugin');
const ExtractTextPlugin = require('extract-text-webpack-plugin');
const UglifyJsPlugin = webpack.optimize.UglifyJsPlugin
//入口文件定义
var entries = function () {
var jsDir = path.resolve(srcDir, 'js')
var entryFiles = glob.sync(jsDir + '/*.{js,jsx}')
var map = {};
for (var i = 0; i < entryFiles.length; i++) {
var filePath = entryFiles[i];
var filename = filePath.substring(filePath.lastIndexOf('\/') + 1, filePath.lastIndexOf('.'));
map[filename] = filePath;
}
return map;
}
//html_webpack_plugins 定义
var html_plugins = function () {
var entryHtml = glob.sync(srcDir + '/*.html')
var r = []
var entriesFiles = entries()
for (var i = 0; i < entryHtml.length; i++) {
var filePath = entryHtml[i];
var filename = filePath.substring(filePath.lastIndexOf('\/') + 1, filePath.lastIndexOf('.'));
var conf = {
title:'Erp',
template: 'html!' + filePath,
filename: filename + '.html',
favicon:'./src/img/fav.ico'
}
//如果和入口js文件同名
if (filename in entriesFiles) {
conf.inject = 'body'
conf.chunks = ['vendor', filename]
}
//跨页面引用,如pageA,pageB 共同引用了common-a-b.js,那么可以在这单独处理
//if(pageA|pageB.test(filename)) conf.chunks.splice(1,0,'common-a-b')
r.push(new HtmlWebpackPlugin(conf))
}
//vue 路由 首页模板
var indexHtml = new HtmlWebpackPlugin({
title:'Erp',
template: './src/index.ejs',
favicon:'./src/img/fav.ico',
// chunks : ['vendor','main'],
minify: {
collapseWhitespace: true,
collapseBooleanAttributes: true,
removeRedundantAttributes: true,
useShortDoctype: true,
removeEmptyAttributes: true
}
})
r.push(indexHtml)
console.log(r)
return r
}
module.exports = function(options){
options = options || {}
var debug = options.debug !==undefined ? options.debug :true;
var plugins = [];
var extractCSS;
var cssLoader;
var sassLoader;
plugins.push(
new CommonsChunkPlugin({
name: 'vendor',
minChunks: Infinity
}),
new webpack.ProvidePlugin({
$: "jquery",
jQuery: "jquery",
"window.jQuery": "jquery",
"window.$": "jquery"
})
);
if(debug){
extractCSS = new ExtractTextPlugin('css/[name].css?[contenthash]')
cssLoader = extractCSS.extract(['css'])
sassLoader = extractCSS.extract(['css', 'sass'])
plugins.push(extractCSS)
}else{
extractCSS = new ExtractTextPlugin('css/[contenthash:8].[name].min.css', {
// 当allChunks指定为false时,css loader必须指定怎么处理
allChunks: false
})
cssLoader = extractCSS.extract(['css?minimize'])
sassLoader = extractCSS.extract(['css?minimize', 'sass'])
plugins.push(
extractCSS,
// new UglifyJsPlugin({
// compress: {
// warnings: false
// },
// output: {
// comments: false
// },
// mangle: {
// except: ['$', 'exports', 'require']
// }
// }),
new webpack.optimize.DedupePlugin(),
new webpack.NoErrorsPlugin()
)
}
console.log(entries())
//config
var config = {
entry: Object.assign(entries(), {
'vendor': ['jquery','bootstrap'],
main : './src/main.js'
}),
output: {
path: path.join(__dirname, "dist"),
filename: "js/[name].js",
chunkFilename: '[chunkhash:8].chunk.js',
publicPath: publicPath
},
module: {
loaders: [
{test: /\.vue$/ ,loader : 'vue'},
{
test: /\.js$/,
exclude: /(node_modules|bower_components)/,
loader: 'babel-loader',
query: {
presets: ['es2015'],
plugins:['transform-runtime']
}
},
{
test: /\.((woff2?|svg)(\?v=[0-9]\.[0-9]\.[0-9]))|(woff2?|svg|jpe?g|png|gif)$/,
loaders: [
//小于10KB的图片会自动转成dataUrl,
'url?limit=10000&name=img/[hash:8].[name].[ext]',
'image?{bypassOnDebug:true, progressive:true,optimizationLevel:3,pngquant:{quality:"65-80",speed:4}}'
]
},
{
test: /\.((ttf|eot)(\?v=[0-9]\.[0-9]\.[0-9]))|(ttf|eot)$/,
loader: 'url?limit=10000&name=fonts/[hash:8].[name].[ext]'
},
{test: /\.(tpl|ejs)$/, loader: 'ejs'},
{test: /\.css$/, loader: cssLoader},
{test: /\.scss$/, loader: sassLoader},
]
},
resolve: {
extensions: ['', '.js', '.css', '.scss', '.tpl', '.png', '.jpg'],
root: [srcDir, nodeModPath],
alias: pathMap,
publicPath: '/'
},
plugins: plugins.concat(html_plugins()),
devtool:'#source-map'
}
return config;
}
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
JavaScript
1
https://gitee.com/q_qian/vue2_vue-router_bootstrap.git
git@gitee.com:q_qian/vue2_vue-router_bootstrap.git
q_qian
vue2_vue-router_bootstrap
vue2_vue-router_bootstrap
master

搜索帮助