vue webpack 搭建环境-- --齐枭飞

共 4515字,需浏览 10分钟

 ·

2017-06-18 21:15

首先你要确定自己安装了node.js和npm包 管理工具

1.新建项目名字为---my-project的一个项目


正在上传...取消


2.npm init -y 初始化项目


3.安装项目依赖-----》npm install --save vue默认安装最新版vue


4.npm install --save-dev webpack webpack-dev-server安装webpack,webpack-dev-server(是一个小型的Node.js Express服务器)


拓展:npm install 在安装 npm 包时,有两种命令参数可以把它们的信息写入 package.json 文件,一个是npm install --save另一个是 npm install --save-dev,他们表面上的区别是--save 会把依赖包名称添加到 package.json 文件 dependencies 键下,--save-dev 则添加到 package.json 文件 devDependencies 键下,--save-dev 是你开发时候依赖的东西,--save 是你发布之后还依赖的东西。


正在上传...取消


5.npm install --save-dev babel-core babel-loader babel-preset-es2015安装babel,babel的作用是将es6的语法编译成浏览器认识的语法es5


正在上传...取消


6.npm install --save-dev vue-loader vue-template-compiler用来解析vue的组件,.vue后缀的文件


7.npm install --save-dev css-loader style-loader用来解析css


拓展:css-loader 和 style-loader,二者处理的任务不同,css-loader使你能够使用类似@import 和 url(…)的方法实现 require()的功能,style-loader将所有的计算后的样式加入页面中,二者组合在一起使你能够把样式表嵌入webpack打包后的JS文件中。


8.npm install --save-dev url-loader file-loader 用于打包文件和图片


9.npm install --save-dev sass-loader node-sass用于编译sass


10.npm install --save-dev vue-router安装路由



编辑项目目录以及添加代码



11.文件目录如下;


正在上传...取消


//dist文件是后面执行webpack指令生产的,不用管;


//webpack.config.js 配置文件,本身也是一个标准的Commonjs规范的模块;


//routes.js文件放路由配置文件;


//index.html首页入口文件


//App.vue是项目入口文件。


//main.js这是项目的核心文件。全局的配置都在这个文件里面配置。


//commponents目录里面放了公共组件header文件。


//views文件放详情页面;



代码



//webpack.config.js


*注释:


test:一个匹配loaders所处理的文件的拓展名的正则表达式(必须)


loader:loader的名称(必须)


include/exclude:手动添加必须处理的文件(文件夹)或屏蔽不需要处理的文件(文件夹)(可选);*


var path = require('path')


var webpack = require('webpack')


module.exports = {


entry: './src/main.js',//值可以是字符串、数组或对象


output: {


path: path.resolve(__dirname, './dist'),//Webpack结果存储


publicPath: '/dist/',//懵懂,懵逼,//然而“publicPath”项则被许多Webpack的插件用于在生产模式和开发模式下下更新内嵌到css、html,img文件里的url值


filename: 'build.js'


},


module: {


rules: [


{


test: /.vue$/,


loader: 'vue-loader',


options: {


loaders: {


}


// other vue-loader options go here


}


},


{


test: /.js$/,


loader: 'babel-loader',


exclude: /node_modules/


},


{


test: /.(png|jpg|gif|svg)$/,


loader: 'file-loader',


options: {


name: '[name].[ext]?[hash]'


}


}


//自己加的


,


{


test: /.css$/,


loader: "style-loader!css-loader"


}


,


{


test: /.scss$/,


loader: "style-loader!css-loader!sass-loader!"


}


]


},


resolve: {


alias: {


'vue$': 'vue/dist/vue.esm.js'


}


},


devServer: {//webpack-dev-server配置


historyApiFallback: true,//不跳转


noInfo: true,


inline: true//实时刷新


},


performance: {


hints: false


},


devtool: '#eval-source-map'


}


if (process.env.NODE_ENV === 'production') {


module.exports.devtool = '#source-map'


// http://vue-loader.vuejs.org/en/workflow/production.html


module.exports.plugins = (module.exports.plugins || []).concat([


new webpack.DefinePlugin({


'process.env': {


NODE_ENV: '"production"'


}


}),


new webpack.optimize.UglifyJsPlugin({


sourceMap: true,


compress: {


warnings: false


}


}),


new webpack.LoaderOptionsPlugin({


minimize: true


})


])


}


//routes.js


// 引用模板


import Vue from 'vue';


import Router from 'vue-router';


import indexPage from './components/header.vue'


import homePage from './views/home.vue'


import aboutPage from './views/about.vue'


Vue.use(Router)


export default new Router({


routes:[


{


path:'/',


component:homePage


},


{


path:'/about',


component:aboutPage


}


]


})


//index.html


//App.vue


import HeaderTab from './components/header.vue';


export default {


name: 'app',


data () {


return {


msg: 'Welcome to Your Vue.js App'


}


},


components:{


HeaderTab


}


}/这里sass编译正常/


$redColor:#f00;


h2{


color:$redColor;


}


app {



text-align: center;


color: #2c3e50;


margin-top: 60px;


}


h1, h2 {


font-weight: normal;


}


ul {


list-style-type: none;


padding: 0;


}


li {


text-align: left;


margin: 0 10px;


}


a {


color: #42b983;


}


//main.js


//main.js这是项目的核心文件。全局的配置都在这个文件里面配置


import Vue from 'vue'


import App from './App.vue'


import router from './routes.js'


import './assets/styles/base.css'


//import './assets/sass/reset.sass'//报错暂时不用sass


Vue.config.debug = true;//开启错误提示


new Vue({


router,


el: '#appIndex',


render: h => h(App)


})


//home.vue


//index.vueexport default {


name: 'indexP',


data () {


return {


todos: [


{ text: 'Learn JavaScript' },


{ text: 'Learn Vue' },


{ text: 'Build something awesome' }


]


}


},


methods:{


eClick(){


console.log(9999);


}


}


}


补充:


把webpack和webpack-dev-server命令转成npm命令


安装 across-env:npm install cross-env --save-dev


npm installcross-env --save-dev


package.json 文件添加


"dev":"cross-env NODE_ENV=development webpack-dev-server --open --hot","build":"webpack"


ok,执行npm指令npm run dev,浏览器打开新窗口(相当于把npm的dev命令指向webpack-dev-server命令);


npmrundev


执行npm run build(相当于把npm的build指令指向webpack命令)


npmrunbuild

浏览 54
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报