Linux下用webpack搭建项目框架

最近在用 webpack 搭建项目基础框架,以下就是搭建步骤:
注意:本次搭建是基于Node.js的,想要安装Node.js的小伙伴可以参考这里

安装webpack

  • 生成package.json文件
    npm init -y

  • 生成.gitignore文件
    gi node,ubuntu,WebStoem >> .gitignore
    gi是自动生成.gitignore的工具,可以自己手动书写.gitignore文件,想要安装gi的小伙伴可以点击这里安装

  • 下载webpack并添加依赖
    npm install webpack --save-dev

  • 检验是否安装成功

    • 添加 entry.js文件
      document.write("It works.");
    • 添加index.html文件
    <html>
      <head>
          <meta charset="utf-8">
      </head>
      <body>
          <script type="text/javascript" src="bundle.js" charset="utf-8"></script>
      </body>
    

</html>

> - 运行命令:
`webpack ./entry.js bundle.js`
>运行`index.html`,出现下面页面则说明安装成功。


![index.png](http://upload-images.jianshu.io/upload_images/3126454-626c061ef674d023.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

- 下载样式加载器

npm install css-loader --save
npm install style-loader --save

- 添加`style.css`

body {
background: pink;
}


- 修改`entry.js`文件

require("./style.css");
document.write("It works.");

- 添加`webpack.config.js`文件

module.exports = {
entry: "./entry.js",
output: {
path: __dirname,
filename: "bundle.js"
},
module: {
loaders: [
{ test: /.css$/, loader: "style-loader!css-loader" }
]
}
};

- 运行`webpack`,如果页面样式正常显示,则证明安装成功。
- 为`package.json`添加以下语句

"scripts": {
"webpack":"webpack -d --watch"
}

- 运行`npm run webpack`,这样webpack可以对文件自动打包。

###搭建服务器(express)
- 本地下载安装express
`npm install express --save`
- 添加`server.js`文件

var express = require('express');
var app = express();
app.get('/', function(req, res){
res.send('hello world');
});
app.listen(3000, function () {
console.log('Example app listening at port 3000:');
})

- 运行`npm start`,访问`localhost:3000`,页面上显示`hello world`,则说明服务器搭建成功。
- 修改`package.json`文件

scripts": {
"start":"nodemon server.js"
}

- 运行`npm start`,服务器就可以自启动。
- 修改`server.js`文件

var express = require('express');
var app = express();
app.use(express.static('./'));
app.listen(3000, function () {
console.log('Example app listening at port 3000:');
})

- 执行下列命令:

npm run webpack
npm start

访问`localhost:3000`,若页面上正常显示,则说明搭建成功。

###安装其他依赖
- 安装`eslint`

npm install -g eslint
eslint --init
eslint yourfile.js

- 安装babel

npm install babel-loader --save
npm install babel-core --save
npm install babel-preset-es2015 --save
npm install babel-preset-react

- 添加`.babelrc`文件

{
"presets": [
"es2015",
"react"
]
}

- 下载`file-loader`和`url-loader`

npm install file-loader --save
npm install url-loader --save

- 修改`webpack.config.js`文件

module: {
loaders: [
{ test: /.css$/, loader: "style-loader!css-loader" },
{
test: /.(jpe?g|png|gif|svg)$/i,
loaders: [
'url?limit=10000&name=img/[hash:8].[name].[ext]', // 图片小于8k就转化为 base64, 或者单独作为文件
'image-webpack' // 图片压缩
]
},
{
test: /.(jpe?g|png|gif|svg)$/i,
loaders: ['file?hash=sha512&digest=hex&name=[hash].[ext]']// 生成 md5 hash 格式的文件名'image-webpack' // 图片压缩
}

      ]
  }
- 下载`path`
`npm install path --save`
- 修改`webpack.config.js`文件

var path=require("path");
module.exports = {
entry: "./public/js/entry.js",
output: {
path: path.join(__dirname,"public/dist"),
filename: "bundle.js"
},

- 执行下列命令

npm install react --save
npm install react-dom --save

- 修改`webpack.config.json`文件

var path=require("path");
module.exports = {
entry: "./public/js/main.js",
output: {
path: path.join(__dirname,"public/dist"),
filename: "bundle.js"
},
module: {
loaders: [
{ test: /.css$/, loader: "style-loader!css-loader" },
{
test: /.(jpe?g|png|gif|svg)$/i,
loaders: [
'url?limit=10000&name=img/[hash:8].[name].[ext]', // 图片小于8k就转化为 base64, 或者单独作为文件
'image-webpack' // 图片压缩
]
},
{
test: /.(jpe?g|png|gif|svg)$/i,
loaders: ['file?hash=sha512&digest=hex&name=[hash].[ext]']// 生成 md5 hash 格式的文件名'image-webpack' // 图片压缩
},
{
test: /.jsx?$/,
loader: 'babel-loader',
exclude: /node_modules/,
query: {
cacheDirectory: true,
presets: ['react', 'es2015']
}
}
]
}
};

- 修改`entry.js`文件

require("./../css/style.css");
import React, {Component} from 'react';
import {render} from "react-dom";
class HelloMessage extends React.Component {
render() {
return <div>Hello</div>;
}
}
render(<HelloMessage/>, document.getElementById('app'));

- 修改`index.html`文件
`<div id="app"></div>`
- 启动服务器和 webpack,访问`localhost:3000`,如果出现下列页面,则证明项目搭建成功。

![index.png](http://upload-images.jianshu.io/upload_images/3126454-b4b57dcbaba3438a.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
项目目录结构如下:
![directory.png](http://upload-images.jianshu.io/upload_images/3126454-ae1d7a456ef836ed.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
源码[点这里](https://github.com/yhl221/build-webpack)

参考资料:
- webpack
https://github.com/chenbin92/react-redux-webpack-starter/issues/1
http://www.pro-react.com/materials/appendixA/
http://webpack.github.io/docs/tutorials/getting-started/
- 浅析 NodeJs 的几种文件路径
https://github.com/imsobear/blog/issues/48
- 配置文档自启动
https://www.zybuluo.com/yangfch3/note/249328#0-npm-run-npm-run-script
- eslint
http://eslint.org/docs/user-guide/getting-started
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 202,980评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,178评论 2 380
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,868评论 0 336
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,498评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,492评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,521评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,910评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,569评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,793评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,559评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,639评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,342评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,931评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,904评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,144评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,833评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,350评论 2 342

推荐阅读更多精彩内容

  • 无意中看到zhangwnag大佬分享的webpack教程感觉受益匪浅,特此分享以备自己日后查看,也希望更多的人看到...
    小小字符阅读 8,133评论 7 35
  • webpack 介绍 webpack 是什么 为什么引入新的打包工具 webpack 核心思想 webpack 安...
    yxsGert阅读 6,440评论 2 71
  • 学习流程 参考文档:入门Webpack,看这篇就够了Webpack for React 一. 简单使用webpac...
    Jason_Zeng阅读 3,104评论 2 16
  • 版权声明:本文为博主原创文章,未经博主允许不得转载。 webpack介绍和使用 一、webpack介绍 1、由来 ...
    it筱竹阅读 11,025评论 0 21
  • 今天分享的主题是跨境并购。其实投资不管是国内的还是国外的,是股票市场或是股权投资、VC投资,其本质是不变的——就是...
    朱习培阅读 331评论 0 2