mode: 'development', devtool: 'cheap-module-eval-source-map',
mode: 'production', devtool: 'cheap-module-source-map',
"scripts": { "dev": "webpack-dev-server --config webpack.dev.js", "build": "webpack --config webpack.prod.js", },
npm install webpack-merge -D
const path = require('path'); const HtmlWebpackPlugin = require('html-webpack-plugin'); const CleanWebpackPlugin = require('clean-webpack-plugin'); module.exports = { // 這個文件要作打包,從哪個文件開始打包 entry: { main: './src/index.js' }, // 打包模塊不知道該怎麼辦,就去模塊配置裏面該怎麼辦 module: { // 規則 rules: [{ test: /\.js$/, // 若是你的這個js文件在node_modules裏面,就不使用babel-loader了 exclude: /node_modules/, loader: 'babel-loader' , },{ // 假設是以jpg結尾的,我須要一個load幫助咱們去打包 test: /\.jpg|png|gif$/, use: { loader: 'url-loader', options: { // 原來是什麼名字,打包好仍是什麼名字 name: '[name]_[hash].[ext]', // 當我碰到jpg,png,gif的時候,打包到根目錄下到imgs文件夾裏 outputPath: 'imgs/', limit: 2048 } } },{ test: /\.eot|ttf|svg|woff$/, use: { loader: 'file-loader' } },{ // 假設是以css結尾的,我須要一個load幫助咱們去打包 test: /\.scss$/, // 須要兩個loader,因此不能是個對象,須要是個數組 use: [ 'style-loader', { loader: 'css-loader', options: { importLoaders: 2 } }, 'sass-loader', 'postcss-loader' ] },{ test: /\.css$/, use: [ 'style-loader', 'css-loader', 'postcss-loader' ] }]}, // HtmlWebpackPlugin會在打包結束後,自動生成一個html文件,並把打包生成的js自動引入到這個html文件中 plugins: [ new HtmlWebpackPlugin({ template: 'src/index.html' }), new CleanWebpackPlugin() ], // 打包文件要放到哪裏去,就配置在output這個對象裏 output: { // 打包好的文件名字 filename: '[name].js', /** * 打包出的文件要把他放到哪個文件夾下,path後面要放一個絕對路徑 * __dirname指的是webpack.config.js所在的當前目錄的這個路徑 * 下面這個結合就是一個絕對路徑 */ path: path.resolve(__dirname, 'dist') } }
const webpack = require('webpack'); const merge = require('webpack-merge'); const commonConfig = require('./webpack.common.js'); const devConfig = { /** * 打包模式,不配置會警告,但底層仍是會去配置默認的,就是production * production: 壓縮模式,被壓縮的代碼 * development: 開發模式,不壓縮的代碼 * */ mode: 'development', /** * cheap:在生成source-map的時候能夠不帶列信息,只帶行信息就能夠了 * 同時不要對我load代碼的source-map。只要對個人業務代碼進行source-map生成 * 這種方式提示的錯誤比較全,打包速度比較快, */ devtool: 'cheap-module-eval-source-map', // 起個服務器 devServer: { // 這個意思是服務器要生成在哪一個文件夾下 contentBase:'./dist', // 啓動的時候自動打開瀏覽器,而後自動訪問這個服務器地址 open:true, // 開啓Hot Module Replacement hot: true }, // HtmlWebpackPlugin會在打包結束後,自動生成一個html文件,並把打包生成的js自動引入到這個html文件中 plugins: [ new webpack.HotModuleReplacementPlugin() ] } module.exports = merge(commonConfig, devConfig);
const merge = require('webpack-merge'); const commonConfig = require('./webpack.common.js'); const prodConfig = { /** * 打包模式,不配置會警告,但底層仍是會去配置默認的,就是production * production: 壓縮模式,被壓縮的代碼 * development: 開發模式,不壓縮的代碼 * */ mode: 'production', /** * cheap:在生成source-map的時候能夠不帶列信息,只帶行信息就能夠了 * 同時不要對我load代碼的source-map。只要對個人業務代碼進行source-map生成 * 這種方式提示的錯誤比較全,打包速度比較快, */ devtool: 'cheap-module-source-map' } module.exports = merge(commonConfig, prodConfig);
"scripts": { "dev": "webpack-dev-server --config ./build/webpack.dev.js", "build": "webpack --config ./build/webpack.prod.js", }