npm install -g webpack
var myjack = require('./jack.js') var myrose = require('./rose.js') console.log(myjack.money)
webpack <入口文件名> <输出文件名>
webpack.config.js
文件// 这是webpack的配置文件 // 每次修改完或着新增,都要从新编译,敲得代码太长,因此模块化一下 // 要求在这个文件中暴露一个对象,按照node 的请求去写就行啦 module.exports = { // 这个属性代表,整个项目的入口文件是谁 entry:'./src/app.js', // 这个属性表示,咱们项目经过webpack打包后的输出文件及输出路径 output:{ filename:'./dist/bundle.js' // 指定输出的文件名 } }
webpack
就能够了!npm install css-loader --save-dev
npm install style-loader@0.13.1 --save-dev
output:{ filename:'./dist/bundle.js' // 指定输出的文件名 }, module:{ loaders:[ // Loaders是提供了一些特定的功能 { // 代表咱们(用到的loader)要处理的文件是什么 test:/\.css$/, // 要把指定的css加入到js中 // loader属性指定具体的loader,这个loader实际上是一个npm外 // css-loader就是一个npm 包! // `npm install css-loader --save-dev` // css-loader只是把css代码加入到js代码(并没把样式添加到dom中) // style-loader 这个loader这为了把css-loader获得css样式添加到dom中 // // webpack会先调用!右边的包来处理咱们的文件,而后把!右边处理的结果交给左边的包来处理! loader:'style-loader!css-loader' } ] }
npm install less --save-dev
,这个须要另外单独安装!require('./xxx.less') // 用到的less文件要引入才能生效!
module.exports = { entry: './src/app.js', output:{ filename:'./dist/bundle.js' }, module:{ loaders:[ { test: /\.less$/ ,// 匹配当前loader要处理的文件 // less-loader做用:是读取test规则对应的文件,而后把读取到的less文件内容转换为css内容 loader:'style-loader!css-loader!less-loader' } ] } }
npm install sass-loader --save
npm install node-sass webpack --save-dev
npm install file-loader --save-dev
// base64javascript
module.exports = { // 指定入口文件 entry:'./src/app.js', output:{ path:'dist',// path指定父目录,webpack会把path与filename拼接成一个路径 // 同时是指定默认文件的生成目录 filename:'bundle.js' }, module:{ loaders:[ // 这里要分开写,写两个loader,由于他们用法不同,一个用来css语法转换, // 一个用来css里面的图片转换 { test: /\.css$/, loader:'style-loader!css-loader',// 从右往左执行! }, { test:/\.(jpg|jpeg)/, // 这里的./是相对于path属性指定的目录 // name参数指定若是不生成base64时,文件的输出目录及输出的文件 // [name]表示原文件名,[ext]表示源文件扩展名 // 若是不指定name参数,输入的图片名是随机的 // limit: 限制转换的大小 // 值的单位是字节,byte // 1byte = 8bit (位) 字节 // 1kb = 1024 字节 // 1M = 1024kb // 1000 loader:'url-loader?limit=12048&name=./img/[name].[ext]' } ] } }
Browser.js
也能够进行语法转换,可是转换性能比较 低一些写代码时,用es6,在写完以后,再用工具转换为es5(为何要写es6呢,由于我想体验es6的简洁写法,
那为何又要转换为es5呢,由于浏览器的兼容性问题)css
npm install babel-loader --save-dev
npm install babel-core@6.0.0 webpack --save-dev
* 你也能够根据提示,看看提示你缺什么,你就安装什么若是是对es6进行请求转换,还须要安装:
npm install babel-preset-es2015 --save-dev
html
// 最终这个配置文件 是由node去解析 const path = require('path') //须要引入path模块 const webpack = require('webpack') module.exports = { // 入口文件目录 // 由于咱们要分开打包,因此不止一个入口 entry:{ // 在这里写路径的时候推荐把绝对路径也写上,把路径完整地写上来 // 在任何模块文件内部,可使用__dirname变量获取当前模块文件所在目录的完整绝对路径 app:path.join(__dirname, 'src/app.js'), // 随便写一个属性,值为数组,数组中的元素是咱们但愿单独打包的第三方包的名字 vender001:['angular'] }, // 输入路径 output:{ // 输出的文件目录 path: path.join(__dirname, 'dist'), // 输出的文件名(也就是打包后的文件) filename:'bundle.js' }, module:{ // 这里是咱们webpack打包用到的loaders loaders:[ { test:/\.js$/, // 也须要一些参数,babel不只仅是能转换es6,还能将react的语法转换成js, // 因此咱们要经过query这个属性来指定一下转化为那种 loader:'babel-loader', query:{ // 这个es2015也是对应了一个npm 包 // npm install babel-preset-es2015 --save-dev presets:['es2015'] //这个presets是babel里面的一个属性 } } ] } }
// 入口文件目录 entry:{ app:path.join(__dirname, 'src/app.js'), // 随便写一个属性,值为数组,数据中的元素是咱们但愿单独打包的第三方包的名字 vender001:['angular'] }, // 输入路径 output:{ // 输出的文件目录 path: path.join(__dirname, 'dist'), // 输出的文件名(也就是打包后的文件) filename:'bundle.js' }, // 这个属性里写上webpack中要使用到的插件 plugins:[ // 要使用webpack自的插件来分离第三方包 new webpack.optimize.CommonsChunkPlugin( // 第一个参数,就是咱们在entry写的一个属性名 // webpack会自动读取对应的值,找到相应的包 'vender001', // 第二个参数,是第三方包单独打包后生成的文件名 'vender.js' ) ]
// npm install html-webpack-plugin --save-dev const HtmlWebpackPlugin = require('html-webpack-plugin'); plugins:[ new HtmlWebpackPlugin({ template:'./src/index.html' // 指定模板,最终生成的html会生成到path属性对应的位置 }) ]