npm init
npm i
npm install --save react react-dom
npm install --save-dev babel-core babel-eslint babel-preset-env babel-preset-es2015 babel-preset-react babel-loader@7
{
"presets":[
"es2015",
"react"
]
}
因為使用babel需要逐一針對檔案編譯,故搭配一個自動打包套件webpack,幫助我們將整個網站做打包;這兩行都要做,第二行不做的話,需要設系統環境變數,指到webpack.cmd與webpack-cli.cmd,兩行都做本機的run cmd,專案的加在專案裡執行
npm install --save-dev webpack webpack-cli //這是加至專案
npm install -g webpack webpack-cli //這會加到本機端(路徑為:C:\Users\Bob-Lai\AppData\Roaming\npm)
var path = require('path');
var webpack = require('webpack');
module.exports={};
entry: [
'./main.jsx'
]
output:{
//path.join的兩個參數,可依目前作業系統的檔案路徑規則,協助串接符號
path: path.join(__dirname, 'dist'),
filename: 'compiled.js'
}
resolve: {
extensions: ['.js', '.jsx']
}
module: {
rules:[
{
// '/' 是 JS 正則表達式標記,'.' 是正則表達式關鍵字,所以前面要加個 '\' 讓正則表達式以字元方式處理,'|' 是 '或' 的意思,'$' 是字串結束符號
// 整體意思是找檔名末尾是 .js 或 .jsx 的
test: /\.(js|jsx)$/,
// node_modules 的 JS 檔必定是瀏覽器原本就能吃的 ES5,不需要經過編譯,所以忽略以增加效率和避免錯誤
exclude: /node_modules/,
use: {
// '-loader' 可省略,即 'babel'
loader: 'babel-loader',
options: {
presets: ['es2015']
}
}
}
]
}
- 'eval'
- 'source-map'
- 'hidden-source-map'
- 'inline-source-map'
- 'eval-source-map'
- 'cheap-source-map'
- 'cheap-module-source-map'
devtool: 'cheap-module-eval-source-map'
plugins: [
new webpack.LoaderOptionsPlugin({
debug: true
})
]
webpack --watch
webpack -p
npm install --save-dev mobx@4.3.1 mobx-react@5.2.3
npm install --save-dev babel-plugin-transform-class-properties@6.24.1 babel-plugin-transform-decorators-legacy@1.3.5
use: {
// '-loader' 可省略,即 'babel'
loader: 'babel-loader',
options: {
presets: ['env'],
plugins: ['transform-decorators-legacy','transform-class-properties']
}
}
npm install react-sortable-hoc --save