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']
        }
    }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章