咱們接着前面的第一篇繼續搭建css
使用 Webpack 打造 vue - todo 應用實踐( 一 )html
此次咱們要藉助於一個很是好的工具來開發,webpack-dev-server
來開發。vue
安裝
cnpm install webpack-dev-server cross-env --save-dev // cross-env 包是一個方便處理不一樣系統下的 process.env 的工具。這樣咱們就不用根據當前不一樣的系統來設置不一樣的環境變量了。
使用
// package.json // 在scirpt中設置兩個 npm 命令 "scripts": { "test": "echo \"Error: no test specified\" && exit 1", "build": "cross-env NODE_ENV=production webpack --config webpack.config.js", // 用於最後打包上線用 "dev": "cross-env NODE_ENV=development webpack-dev-server --config webpack.config.js" // 用於平時開發用 } // cross-env NODE_ENV=production cross-env 對 NODE_ENV 進行處理,在這裏咱們爲 NODE_ENV 設置了兩個變量,一個是development(開發)一個是production(生產)。
配置
// webpack.config.js const path = require('path') const isDev = process.env.NODE_ENV === 'development' const htmlWebpackPlugin = require('html-webpack-plugin') // 用於生成 dist 下的 html const webpack = require('webpack') const config = { mode: 'development', target: 'web', entry: path.join(__dirname, 'src/index.js'), output: { filename: 'bundle.js', path: path.join(__dirname, 'dist') }, module: { rules: [ { test: /\.vue$/, loader: 'vue-loader' }, { test: /\.css$/, use: [ 'style-loader', 'css-loader' ] }, { test: /\.(png|jpg|gif|svg|jpeg)$/, use: [ { loader: 'url-loader', options: { limit: 30000, name: '[name]-[hash].[ext]' } } ] }, { test: /\.styl$/, use: [ 'style-loader', 'css-loader', 'stylus-loader' ] } ] }, plugins:[ // 咱們須要用到的一些插件 new htmlWebpackPlugin(), new webpack.DefinePlugin({ 'process.env': { NODE_ENV: isDev ? '"development"' : '"production"' // 經過 process.env 咱們能夠獲取到 NODE_ENV 的值 } }) ] } if (isDev) { config.devServer = { // devserver的配置 port: 8000, host: 'localhost', overlay: { error: true }, open: true, // 自動打開瀏覽器 hot: true } config.plugins.push( // 這些插件的做用是,熱跟新模式下,若是修改了代碼,那麼試圖會無刷新從新渲染 new webpack.HotModuleReplacementPlugin(), new webpack.NoEmitOnErrorsPlugin() ) } module.exports = config;
npm運行
npm run dev // i 「wds」: Project is running at http://localhost:8000/ // i 「wds」: webpack output is served from / // i 「wdm」: wait until bundle finished: / // ...
未完待續(小編正在急稿中~~)