react雕刻网站——开发环境配置(2)

yarn ,webpack配置

|——yarn的安装

    输入npm install yarn进行安装

输入 yarn-v 查看版本

查看对应文件夹


                                                         yarn的基本用法

1、初始化一个新的项目

yarn init

2、添加一个依赖包

yarn add  [package]yarnadd [package]@[version]yarnadd [package]@[tag]

3、安装所有的依赖包

yarn 或者 yarn install

4、npm 与 yarn命令比较

NPM  YARN说明

npm init                                   yarn init                             初始化某个项目

npm install/link                          yarn install/link                默认的安装依赖操作

npm install taco —save            yarn add taco                  安装某个依赖,并且默认保存                                                                                              到  package.

npm uninstall taco —save          yarn remove taco          移除某个依赖项目

npm install taco —save-dev       yarn add taco —dev       安装某个开发时依赖项目

npm update taco —save             yarn upgrade taco          更新某个依赖项目

npm install taco --global              yarn global add taco      安装某个全局依赖项目

npm publish/login/logout             yarn publish/login/logout   发布/登录/登出,一系列                                                                                                       NPM Registry操作

npm run/test                                 yarn run/test                       运行某个命令


|——webpack的安装(方便文件打包)

(我使用的是3.10.0版本)

安装命令:yarn add webpack@3.10.0 --dev


共用54.14.s我们安装成功了

查看文件目录


需要我们新建webpack.cong.js文件


见文件目录


需要我们新建webpack.cong.js文件

在webpack.config.js中写入

const path = require('path');

module.exports = {

  entry: './path/to/my/entry/file.js',

  output: {

    path: path.resolve(__dirname, 'dist'),

    filename: 'my-first-webpack.bundle.js'  }

};



新建文件夹src,里面创建app.js文件


新建文件夹src,里面创建app.js文件

修改webpack.configk.js出口,入口

const path = require('path');

module.exports = {

    entry: './src/app.js', //入口   

     output: {

        path: path.resolve(__dirname, 'dist'),

        filename: 'app.js'    },

};

执行命令

node_modules/.bin/webpack

在dist目录下就能看到打包好的app.js

最基本的webpack打包就弄好了



打包成功

检查文件夹


会在自动生成的dist文件发现app,js文件

======================================文件类型的处理==============================


需要处理的文件类型

|——安装html插件html-webpack-plugin

安装命令:

yarn add html-webpack-plugin@2.30.1 --dev

安装html插件html-webpack-plugin

第一步:在webpack.config.js文件下配置html-webpack-plugin

const path = require('path');

const HtmlWebpackPlugin = require('html-webpack-plugin')

module.exports = {

    entry: './src/app.js',//入口

    output: {

        path: path.resolve(__dirname, 'dist'),

        filename: 'app.js'

    },

    plugins: [

        new HtmlWebpackPlugin({

            template: './src/index.html'             //template是生成html文件按自己定义的模板,路径定义为./src/index.html

        })           

    ]

};



新建html文件


打包成功


查看文件夹,打包成功


打包的index.html引入app.js

|——安装javasrcipt插件babel

安装命令:

yarn add babel-core@6.26.0 babel-preset-env@1.6.1 babel-loader@7.1.2 --dev

安装完命令可以在package.json,多了几个属性

"babel-core": "6.26.0","babel-loader": "7.1.2","babel-preset-env": "1.6.1",

|——webpack.config,js配置babel插件

const path = require('path');

const HtmlWebpackPlugin = require('html-webpack-plugin')

module.exports = {

    entry: './src/app.js',//入口   

     output: {

        path: path.resolve(__dirname, 'dist'),

        filename: 'app.js'   

},

    module: {

        rules: [

            {

                test: /\.m?js$/,

                exclude: /(node_modules)/,

                use: {

                    loader: 'babel-loader',

                    options: {

                        presets: ['env']

                    }

                }

            }

        ]

    },

    plugins: [

        new HtmlWebpackPlugin({ template: './src/index.html'  })

    ]

};



在app.js简单写es6语法


再打包一次


打开dist中编译的app.js可以看到文件已经编译成功

|——.安装react插件babel-preset-react

安装命令

yarn add babel-preset-react@6.24.1 --dev

webpack.config.js配置

const path = require('path');

const HtmlWebpackPlugin = require('html-webpack-plugin')

module.exports = {

entry: './src/app.jsx', //入口

output: {

path: path.resolve(__dirname, 'dist'),

filename: 'app.js'

},

module: {

rules: [

{

test: /\.m?jsx$/,

exclude: /(node_modules)/,

use: {

loader: 'babel-loader',

options: {

presets: ['env', 'react']

}

}

},

// css文件处理

{

test:/\.css$/i,

use: ['style-loader', 'css-loader'],

},

]

},

plugins: [

new HtmlWebpackPlugin({

template: './src/index.html' //template是生成html文件按自己定义的模板,路径定义为./src/index.html

})

]

};

|——在项目中添加react.js

安装命令

yarn add react@16.2.0 react-dom@16.2.0

第一步:在src目录下的app.js添加react语法试一下

import React from 'react'import ReactDOM from 'react-dom'

ReactDOM.render(

<h1>hello, world</h1>,   document.getElementById('app')

)

第二步:把app.js后缀改成app.jsx

第三步:webpack.config.js修改entry的入口文件后缀修改成jsx

entry: './src/app.jsx'

第四步:编译的后缀名js改成jsx

第五步:执行打包命令node_modules/.bin/webpack看看效果

打开打包好的dist/index.html可以看到hello world说明刚才在app.jsx用react语法写的“hello world”编译成功了



编译成功

|——安装css插件css-loader

安装命令

 yarn add style-loader@0.19.1 css-loader@0.28.8 --dev


配置webpack.config.js,在rules添加一个处理css的对象

module: {

        rules: [

            {

                test: /\.m?jsx$/,

                exclude: /(node_modules)/,

                use: {

                    loader: 'babel-loader',

                    options: {

                        presets: ['env','react']                    }                }            },

// css文件处理            {                test:

/\.css$/i,

                use: ['style-loader', 'css-loader'],

            },

        ]

    },

新建一个文件app.css,在里面写一些样式

第三步:然后在app.jsx引入样式

import './app.css'

打包node_modules/.bin/webpack之后打开dist/index.html看看样式有没有发生改变


写入样式


编译成功

|——安装extract-text-webpack-plugin插件

它将*.css条目块中的所有必需模块移动到单独的CSS文件中。因此,样式不再内联到JS包中,而是在单独的CSS文件中(styles.css)

第一步:安装插件

安装命令:

 yarn add extract-text-webpack-plugin@3.0.2 --dev


第二步:配置webpack.config.js

const path = require('path');

const HtmlWebpackPlugin = require('html-webpack-plugin')

c

onst ExtractTextPlugin = require('extract-text-webpack-pluginmodule.exports = {    entry: './src/app.jsx',//    output: {        path: path.resolve(__dirname, 'dist'),

        filename: 'app.js'    },

    module: {

        rules: [

            {

                test: /\.m?jsx$/,

                exclude: /(node_modules)/,

                use: {

                    loader: 'babel-loader',

                    options: {

                        presets: ['env','react']

                    }

                }

            },

            {

                test: /\.css$/i,

                use: ExtractTextPlugin.extract({

                    fallback: "style-loader",

                    use: "css-loader"                })

            },

        ]

    },

    plugins: [

        new HtmlWebpackPlugin({

            template: './src/index.html'}),

newExtractTextPlugin("index.css"),

] };


|——安装sass-loader插件

第一步:安装

安装命令:

yarn add sass-loader@6.0.6 --dev

第二步:配置webpack.config.js

const path              = require('path');const HtmlWebpackPlugin = require('html-webpack-plugin');

const ExtractTextPlugin = require('extract-text-webpack-plugin');

module.exports = {

    entry: './src/app.jsx',    output: {

        path: path.resolve(__dirname, 'dist'),

        filename: 'app.js'    },

    module: {

        rules: [

            {

                test: /\.jsx$/,

                exclude: /(node_modules)/,

                use: {

                    loader: 'babel-loader',

                    options: {

                        presets: ['env', 'react']

                    }

                }

            },            {

                test: /\.css$/,

                use: ExtractTextPlugin.extract({

                    fallback: "style-loader",

                    use: "css-loader"                })

            },

            // sass文件的处理            {

                test: /\.scss$/,

                use: ExtractTextPlugin.extract({

                    fallback: 'style-loader',

                    use: ['css-loader', 'sass-loader']

                })

            }

        ]

    },

    plugins: [new HtmlWebpackPlugin({

            template: './src/index.html'        }),newExtractTextPlugin("css/[name].css"),

    ]

};

第三步:新建一个index.scss文件

写一些scss的语法

第四步:在app.jsx引入

import React from 'react';

import ReactDOM from 'react-dom';

import './app.css'import './index.scss' //引入scss文件ReactDOM.render(

<h1>hello,world</h1>,    document.getElementById('app')

)

第四步:用打包命令执行打包

如果出现:Cannot find module 'node-sass'

安装一下node-sass

yarn add node-sass --seve-dev

然后继续打包

查看index.html样式的改变


|——安装url-loader,对图片对处理

安装命令

yarn add file-loader@1.1.6 url-loader@0.6.2 --dev


第二步:配置webpack.confog.js

const path              = require('path');const HtmlWebpackPlugin = require('html-webpack-plugin');

const ExtractTextPlugin = require('extract-text-webpack-plugin');

module.exports = {

    entry: './src/app.jsx',    output: {

        path: path.resolve(__dirname, 'dist'),

        filename: 'app.js'    },

    module: {

        rules: [

            {

                test: /\.jsx$/,

                exclude: /(node_modules)/,

                use: {

                    loader: 'babel-loader',

                    options: {

                        presets: ['env', 'react']

                    }

                }

            },            {

                test: /\.css$/,

                use: ExtractTextPlugin.extract({

                    fallback: "style-loader",

                    use: "css-loader"                })

            },            {

                test: /\.scss$/,

                use: ExtractTextPlugin.extract({

                    fallback: 'style-loader',

                    use: ['css-loader', 'sass-loader']

                })

            },

            //图片对配置            {

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

                use: [

                    {

                        loader: 'url-loader',

                        options: {

                            limit: 8192,

                        },

                    },

                ],

            },

        ]

    },

    plugins: [new HtmlWebpackPlugin({

            template: './src/index.html'        }),newExtractTextPlugin("css/[name].css"),

    ]

};

第三步:放一张图片,然后引入

第四步:打包命令打包,看到dist文件多了一张重命名后的img

|——安装webpack-dev-serve

第一步:安装命令

 yarn add webpack-dev-server@2.9.7 --dev

第二步:配置webpack.config.js

const path              = require('path');

const webpack          = require('webpack');

const HtmlWebpackPlugin = require('html-webpack-plugin');

const ExtractTextPlugin = require('extract-text-webpack-plugin');

module.exports = {

    entry: './src/app.jsx',//入口    output: {

        path: path.resolve(__dirname, 'dist'),

        //+++publicPath: '/dist/',

        filename: 'js/app.js'    },

    module: {

        rules: [

            {

                test: /\.jsx$/,

                exclude: /(node_modules)/,

                use: {

                    loader: 'babel-loader',

                    options: {

                        presets: ['env', 'react']

                    }

                }

            },

            // css文件的处理            {

                test: /\.css$/,

                use: ExtractTextPlugin.extract({

                    fallback: "style-loader",

                    use: "css-loader"                })

            },

            // sass文件的处理            {

                test: /\.scss$/,

                use: ExtractTextPlugin.extract({

                    fallback: 'style-loader',

                    use: ['css-loader', 'sass-loader']

                })

            },

            //图片配置            {

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

                use: [

                    {

                        loader: 'url-loader',

                        options: {

                            limit: 8192,

                            name: 'resource/[name].[ext]'                        },

                    },

                ],

            },

            // 字体图标的配置            {

                test: /\.(eot|svg|ttf|woff|woff2|otf)$/,

                use: [

                    {

                        loader: 'url-loader',

                        options: {

                            name: 'resource/[name].[ext]'// publicPath:'/fonts/',//打包到fonts文件夹// useRelativePath:true,//设置为相对路径// name:'[name].[ext]'                        }

                    }

                ]

            }

        ]

    },

    plugins: [

        //处理html文件new HtmlWebpackPlugin({

            template: './src/index.html'        }),

        // 独立css文件newExtractTextPlugin("css/[name].css"),

        //提出公共模块new webpack.optimize.CommonsChunkPlugin({

            name : 'common',

            filename: 'js/base.js'        })

    ],

    devServer: {

        //contentBase: './dist'

//修改端口号

      port: 8086

    },

};

执行命令

node_modules/.bin/webpack-dev-server

运行成功
这是个开心的结局,配置完成

完整的webpack.config.js

const path              = require('path');

const HtmlWebpackPlugin = require('html-webpack-plugin');

const ExtractTextPlugin = require('extract-text-webpack-plugin');

module.exports = {

    entry: './src/app.jsx',

    output: {

        path: path.resolve(__dirname, 'dist'),

        filename: 'app.js'

    },

    module: {

        rules: [

            {

                test: /\.jsx$/,

                exclude: /(node_modules)/,

                use: {

                    loader: 'babel-loader',

                    options: {

                        presets: ['env', 'react']

                    }

                }

            },

            {

                test: /\.css$/,

                use: ExtractTextPlugin.extract({

                    fallback: "style-loader",

                    use: "css-loader"

                })

            },

            // sass文件的处理

            // {

            //     test: /\.scss$/,

            //     use: ExtractTextPlugin.extract({

            //         fallback: 'style-loader',node_

            //         use: ['css-loader', 'sass-loader']

            //     })

            // }

        ]

    },

    plugins: [

        new HtmlWebpackPlugin({

            template: './src/index.html'

        }),

        new ExtractTextPlugin("css/[name].css"),

    ],

    devServer: {

        contentBase:'./dist'

    }

};

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,384评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,845评论 3 391
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,148评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,640评论 1 290
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,731评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,712评论 1 294
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,703评论 3 415
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,473评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,915评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,227评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,384评论 1 345
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,063评论 5 340
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,706评论 3 324
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,302评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,531评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,321评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,248评论 2 352

推荐阅读更多精彩内容