跟着Webpack傻瓜式指南(一)这个教程在安装webpack和webpack-dev-server的时候遇到不少问题,查了不少终于一一找到解决办法。
主要参考了这三篇博文:
moudule.js:338 throw err; Error: Cannot find module 'webpack/lib/node/NodeTemplatePlugin'
建立Webpack简单项目碰见的那些事儿
webpack-dev-server 使用方法,看完还不会的来找我~
看到网上不少人也遇到一样这些问题,特写这篇博文,简要总结安装过程并穿插问题解决办法,但愿能给你们带来一些帮助。javascript
npm install -g webpack
html
npm init
c. 添加app文件夹,内含2个js文件
sub.jsjava
//咱们这里使用CommonJS的风格 function generateText() { var element = document.createElement('h2'); element.innerHTML = "Hello h2 world"; return element; } module.exports = generateText;
index.jsnode
var sub = require('./sub'); var app = document.createElement('div'); app.innerHTML = '<h1>Hello World</h1>'; app.appendChild(sub()); document.body.appendChild(app);
a. 安装html-webpack-plugin,快速生成HTMLnpm install html-webpack-plugin --save-dev
可在项目根目录下安装(不加-g,在项目根目录出现node_modules文件夹,内含html-web-pack-plugin及其依赖包),也可全局安装(加-g 必须sudo)webpack
b. 写webpack.config.js配置文件中的内容web
var path = require('path'); var HtmlwebpackPlugin = require('html-webpack-plugin'); //定义了一些文件夹的路径 var ROOT_PATH = path.resolve(__dirname); var APP_PATH = path.resolve(ROOT_PATH, 'app'); var BUILD_PATH = path.resolve(ROOT_PATH, 'build'); module.exports = { //项目的文件夹 能够直接用文件夹名称 默认会找index.js 也能够肯定是哪一个文件名字 entry: APP_PATH, //输出的文件名 合并之后的js会命名为bundle.js output: { path: BUILD_PATH, filename: 'bundle.js'//将app文件夹中的两个js文件合并成build目录下的bundle.js文件 }, //添加咱们的插件 会自动生成一个html文件 plugins: [ new HtmlwebpackPlugin({ title: 'Hello World app' })//在build目录下自动生成index.html,指定其title ], };
webpack
typescript
npm install webpack
touch ~/.bash_profile
vim ~/.bash_profile
修改打开的.bash_profile文件:express
export NODE_PATH="/usr/local/lib/node_modules"
source ~/.bash_profile
webpack --watch
,动态监听文件的改变并实时打包,输出新bundle.js文件;但不能作到hot replace,即每次webpack编译以后,还需手动刷新浏览器webpack-dev-server
,无需--inline
webpack-dev-server --inline
b. 安装webpack-dev-servernpm install webpack-dev-server --save-dev
可在项目根目录下安装(不加-g,在项目根目录出现node_modules文件夹,内含webpack-dev-server及其依赖包),也可全局安装(加-g 必须sudo)npm
c. 在webpack.config.js中添加配置json
var webpack=require('webpack'); module.exports = { …… devServer: { historyApiFallback: true, inline: true,//注意:不写hot: true,不然浏览器没法自动更新;也不要写colors:true,progress:true等,webpack2.x已不支持这些 }, plugins:[ …… new webpack.HotModuleReplacementPlugin() ] …… };
d. 在package.json里配置运行的命令(npm支持自定义一些命令)
"scripts": { "start": "webpack-dev-server --inline"//注意:不写--hot,不然浏览器没法自动更新 },
npm start
npm install webpack