webpack的使用(一)


entry與output

//直接給出entry與output
webpack ./src/.main.js ./dist/bundle.js

配置文件:webpack.config.js

const path = require('path'); //使用Node模塊需要事先npm init,生成package.json

module.exports = {
	entry:'./src/main/js',
	output:{
		path:path.resolve(__dirname,'dist'),
		filename:'bundle.js'
	}
}

之後就可以直接通過 webpack 命令進行打包。

但是一般來說,全局webpack並不常用,項目開發一般使用的是項目內的webpack,使用如下命令安裝項目內的webpack:

npm install webpack@3.6.0 --save-dev //安裝時可以指定版本,--save-dev命令表明webpack爲開發時依賴

/*
--save : 將保存配置信息到pacjage.json。默認爲dependencies節點中。
		 該節點指定運行時的依賴,即發佈後生產環境下還需要用的模塊。
--dev:將保存配置信息到devDependencies節點中。 
		 該節點指定開發時的依賴。裏面的模塊是開發時用的,發佈時用不到它。
因此模塊在發佈後仍需要使用的話就用 --save,發佈後不再使用就用 --save-dev
 */

之後我們可以用另一種命令來進行打包,該命令需要事先在package.json文件中做一些更改:

{
  "name": "meetwebpack",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
    "build": "webpack" //在scripts中新增這條命令
  },
  "author": "",
  "license": "ISC"
}

之後可以通過使用如下命令對項目進行打包:

npm run build //該命令會做一個替換,即build映射向webpack,因此實際上執行命令的仍然是webpack,
			  //但是npm run這種形式會優先使用項目中的webpack
			  //直接在控制檯使用webpack默認會使用全局的webpack

loader

webpack自身只理解js代碼,因此只能打包js文件並處理相關依賴,若要處理其它類型的文件與依賴,如css、圖片、less等,或是把ES6、TypeScript代碼轉爲ES5,將scss、less轉換爲css,將.jsx、.vue轉換爲js等,還需要對webpack進行拓展,這將藉助於loader。

loader的使用步驟:

#1 下載安裝所需的loader
#2 在webpack的配置文件中配置loader

對css文件的配置:

npm install --svae-dev css-loader //安裝css-loader(該loader加載css文件)
npm install --svae-dev css-loader //安裝style-loader (該loader解析css並把它放進DOM中)

module.exports = {
	entry:'./src/bbb.js',
	output:{
		path:path.resolve(__dirname,'dist'),
		filename:'bundle.js'
	},
	module:{
		rules:[
			{
				test:/\.css$/,  //正則表達式
				use:['style-loader','css-loader'] //use參數使用loader的順序是從右向左
			}
		]
	}
}

對less文件的配置:

npm install --save-dev less-loader less  

module.exports =  {
	...
	module:{
		rules:[{
			test: /\.less$/,
            use: [{
                loader: "style-loader" // creates style nodes from JS strings
            }, {
                loader: "css-loader" // translates CSS into CommonJS
            }, {
                loader: "less-loader" // compiles Less to CSS
            }]
		}]
	}
}

圖片文件的配置:

npm install --save-dev url-loader

module.exports = {
	...
	module:{
		rules:[{
			test:/\.(jpg|png|gif|jpeg)$/,
			use:[{
				loader:'url-loader',
				options:{
					//當圖片大小小於limit時,圖片會編譯成Base64字符串格式,不需要再打包
					//否則需要使用安裝file-loader,並且需要打包
					//打包大於limit圖片時還需要在config.js配置文件下的output選項添加
					//publicPath:'dist/' 來處理圖片的url路徑問題
					limit:8192
					name:'img/[name].[hash:8].[ext]' //對打包的圖片進行命名
				}
			}]
		}]
	}
}

ES6轉ES5:

npm install --save-dev babel-loader@7 babel-core babel-preset-es2015

{
	test: /\.js$/,
    exclude: /(node_modules|bower_components)/,
    use: {
        loader: 'babel-loader',
        options: {
            presets: ['es2015']
        }
    }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章