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屬性對應的位置 }) ]