vue-cli+webpack打包配置
阿新 • • 發佈:2018-08-09
output iat lint creat clu 包含 res client sele
上一篇說的是 webpack打包生成測試和生產版本; 這篇說的這個配置 應該是在打包之前應該配置好的
webpack配置如下:
1. webpack.base.conf.js
入口文件 entry 代碼如下:
entry: {
app: ‘./src/main.js‘
}
輸出文件 output 代碼如下:
output: { path: config.build.assetsRoot, // 導出目錄的絕對路徑 在項目的根目錄下 會新建dist文件夾 filename: ‘[name].js‘, // 導出文件的文件名 publicPath: process.env.NODE_ENV === ‘production‘ ? config.build.assetsPublicPath : config.dev.assetsPublicPath }
整體代碼
‘use strict‘; const path = require(‘path‘); const utils = require(‘./utils‘); const config = require(‘../config‘); const vueLoaderConfig = require(‘./vue-loader.conf‘); function resolve (dir) { return path.join(__dirname, ‘..‘, dir); } /* 對於以.js或.vue後綴結尾的文件(在src目錄下或test目錄下的文件),使用eslint進行文件語法檢測。 */ const createLintingRule = () => ({ test: /\.(js|vue)$/, loader: ‘eslint-loader‘, enforce: ‘pre‘, include: [resolve(‘src‘), resolve(‘test‘)], options: { formatter: require(‘eslint-friendly-formatter‘), emitWarning: !config.dev.showEslintErrorsInOverlay } }); module.exports = { entry: { app: ‘./src/main.js‘ }, output: { path: config.build.assetsRoot, // 導出目錄的絕對路徑 filename: ‘[name].js‘, // 導出文件的文件名 publicPath: process.env.NODE_ENV === ‘production‘ ? config.build.assetsPublicPath : config.dev.assetsPublicPath }, // 設置模塊如何被解析 resolve: { // 自動解析確定的擴展名,導入模塊時不帶擴展名 extensions: [‘.js‘, ‘.vue‘, ‘.json‘], // 創建import 或 require的別名 /* 比如如下文件 src components a.vue router home index.vue 在index.vue裏面,正常引用A組件;如下: import A from ‘../../components/a.vue‘; 如果設置了 alias後,那麽引用的地方可以如下這樣了 import A from ‘@/components/a.vue‘; 註意:這裏的 @ 起到了 resolve(‘src‘)路徑的作用了。 */ alias: { ‘vue$‘: ‘vue/dist/vue.esm.js‘, ‘@‘: resolve(‘src‘) } }, module: { rules: [ // 在開發環境下 對於以.js或.vue後綴結尾的文件(在src目錄下或test目錄下的文件),使用eslint進行文件語法檢測。 ...(config.dev.useEslint ? [createLintingRule()] : []), { test: /\.vue$/, // vue 文件後綴的 loader: ‘vue-loader‘, // 使用vue-loader處理 options: vueLoaderConfig // options是對vue-loader做的額外選項配置 文件配置在 ./vue-loader.conf 內可以查看代碼 }, { test: /\.js$/, // js文件後綴的 loader: ‘babel-loader‘, // 使用babel-loader處理 include: [resolve(‘src‘), resolve(‘test‘)] // 包含src和test的文件夾 }, { test: /\.(png|jpe?g|gif|svg)(\?.*)?$/, // 處理圖片後綴 loader: ‘url-loader‘, // 使用url-loader處理 options: { limit: 10000, // 圖片小於10000字節時以base64的方式引用 name: utils.assetsPath(‘img/[name].[hash:7].[ext]‘) // 文件名為name.7位hash的值.擴展名 } }, { test: /\.(mp4|webm|ogg|mp3|wav|flac|aac)(\?.*)?$/, // 音頻文件後綴 loader: ‘url-loader‘, options: { limit: 10000, // 小於10000字節時的時候處理 name: utils.assetsPath(‘media/[name].[hash:7].[ext]‘) // 文件名為name.7位hash的值.擴展名 } }, { test: /\.(woff2?|eot|ttf|otf)(\?.*)?$/, // 字體文件 loader: ‘url-loader‘, options: { limit: 10000, // 字體文件小於10000字節的時候處理 name: utils.assetsPath(‘fonts/[name].[hash:7].[ext]‘) // 文件名為name.7位hash的值.擴展名 } } ] }, node: { // prevent webpack from injecting useless setImmediate polyfill because Vue // source contains it (although only uses it if it‘s native). setImmediate: false, // prevent webpack from injecting mocks to Node native modules // that does not make sense for the client dgram: ‘empty‘, fs: ‘empty‘, net: ‘empty‘, tls: ‘empty‘, child_process: ‘empty‘ } };
對webpack.base.conf中的 const vueLoaderConfig = require(‘./vue-loader.conf‘);
vue-loader.conf.js 代碼如下:
vue-cli+webpack打包配置