额、备份一下总是好的
#为了避免某些国外镜像源安装失败,先设置淘宝镜像代理 yarn config set registry https://registry.npm.taobao.org # 初始化yarn yarn init -y # 添加webpack yarn add webpack # 添加webpack插件 yarn add html-webpack-plugin yarn add webpack-dev-server yarn add extract-text-webpack-plugin # 添加webpack-loader yarn add style-loader css-loader node-sass sass-loader yarn add url-loader yarn add file-loader yarn add postcss-loader autoprefixer # 添加babel插件 yarn add babel-preset-react yarn add babel-loader babel-core # react相关 yarn add react react-dom yarn add react-router react-router-dom yarn add redux redux-thunk redux-saga react-redux yarn add react-router-redux@next history # 蚂蚁金服的UI框架:Ant Design yarn add antd # 添加第三方库 yarn add axios
配置webpack.config.js
const path = require('path')
const HtmlWebpackPlugin = require('html-webpack-plugin')
const ExtractTextPlugin = require('extract-text-webpack-plugin')
const autoprefixer = require('autoprefixer')
module.exports = {
entry: {
main: __dirname + '/src/main.js'
},
output: {
path: path.resolve(__dirname, 'dist'),
filename: 'assets/js/[name].js'
},
devtool: 'source-map',
module: {
rules: [
{ test: /.js$/, exclude: /node_modules/, loader: 'babel-loader' },
{
test: /.woff(?v=d+.d+.d+)?$/,
loader: 'url-loader',
options: {
limit: 10000,
minetype: 'application/font-woff',
},
},
{
test: /.woff2(?v=d+.d+.d+)?$/,
loader: 'url-loader',
options: {
limit: 10000,
minetype: 'application/font-woff',
},
},
{
test: /.ttf(?v=d+.d+.d+)?$/,
loader: 'url-loader',
options: {
limit: 10000,
minetype: 'application/octet-stream',
},
},
{ test: /.eot(?v=d+.d+.d+)?$/,
loader: 'url-loader',
options: {
limit: 10000,
minetype: 'application/vnd.ms-fontobject',
},
},
{
test: /.svg(?v=d+.d+.d+)?$/,
loader: 'url-loader',
options: {
limit: 10000,
minetype: 'image/svg+xml',
},
},
{
test: /.(png|jpg|jpeg|gif)(?v=d+.d+.d+)?$/i,
loader: 'url-loader',
options: {
limit: 10000,
},
},
{
test: /.(scss|sass|css)$/,
use: ExtractTextPlugin.extract({
fallback: 'style-loader',
use: [
{ loader: 'css-loader' },
{
loader: 'postcss-loader',
options: {
sourceMap: true,
plugins: () => [autoprefixer({ browsers: ['iOS >= 7', 'Android >= 4.1'] })],
},
},
{
loader: 'sass-loader',
query: {
sourceMap: true
}
}
]
})
}
]
},
plugins: [
new HtmlWebpackPlugin({
title: 'my title',
filename: __dirname + '/dist/index.html',
template: __dirname + '/index.html',
chunks: ['main']
}),
new ExtractTextPlugin('assets/css/[name].css')
],
devServer: {
contentBase: path.join(__dirname, 'dist'),
compress: true,
port: 9000
}
}
配置.babelrc
{ "presets": ["react"], "plugins": [ ["import", { "libraryName": "antd", "style": "css" }] ] }
配置package.json,加入scripts
{ ... "scripts": { "build": "webpack", "dev": "webpack-dev-server" } }