//安装gulp 作为开发时依赖项
yarn add gulp --dev
//启动server 可打开浏览器
yarn add gulp-webserver --dev
//node-sass 是一个库 编译sass文件
yarn add node-sass gulp-sass
//合并文件
yarn add gulp-concat --dev
//编译js文件
yarn add webpack-stream --dev
//安装webpack 也可全局装 也可以@version
cnpm install webpack --save-dev
//初始化 生成packjson文件
npm init
//配置cli
yarn add webpack webpack-cli -D
//需要配置一个webpack.config.js
//修改package.json 增加:
"dev": "webpack"
//将编译出来的js文件 插入到模板文件中 也就是导入html页面中
yarn add html-webpack-plugin -D
//热更新
yarn add webpack-dev-server -D
//解析scss文件 先用css-loader解析css文件 再调用style-loader打包
yarn add css-loder style-loader -D
yarn add sass-loader node-sass -D
//将第三方css文件编译到自己项目中
yarn add copy-webpack-plugin -D
webpack的配置
```javascript
```javascript
const path = require('path');
const htmlWebpackPlugin = require('html-webpack-plugin');
const copyPlugin = require('copy-webpack-plugin');
module.exports = {
mode: "development",
entry: './src/index.js',
devtool: 'inline-source-map',
output: {
filename: 'index.min.js',
path: path.resolve(__dirname, './dev')
},
devServer: {
host: "0.0.0.0",
open: true,
port: 7099,
proxy: {
"/api": {
target: "http://localhost:3000",
changeOrigin: true,
pathRewrite: {
// "^/api": ""
}
},
"/upload": {
target: "http://localhost:3000",
changeOrigin: true,
pathRewrite: {
// "^/api": ""
}
}
}
},
plugins: [
new htmlWebpackPlugin({
//webpack-dev-server在内存中生成的文件名称 自动将 build注入到这个页面底部 才能实现自动刷新功能
filename: 'index.html',
//根据index.html这个模板来生成 'js导入'
template: './src/index.html'
}),
new copyPlugin([{
from: './src/static/', to: './static/'
}])
],
module: {
rules: [
//表示当前要打包的文件的后缀正则表达式
{ test: /\.html$/, loader: "string-loader" },
{
//匹配文件的后缀
// 所有的.scss sass文件被此loader处理
test: /\.s[ac]ss$/i,
use: [
这里也可以这么写
//'style-loader!css-loader' 从右边向左边调用
//从js字符串创建style节点
// Creates `style` nodes from JS strings
'style-loader',
// MiniCssExtractPlugin.loader,
// Translates CSS into CommonJS
'css-loader',
// Compiles Sass to CSS
'sass-loader',
],
},
]
}
}
首先,Grunt和Gulp只能将一些CSS和JS文件分别压缩合并成单个文件,当然也具有一些编译功能,比如Less和Sass的编译、ES6到ES5的编译等等。但是Webpack不仅具有它们所具备的这些编译压缩合并功能,同时还具备模块化开发和组件式开发等优点,在目前流行的前端框架React和Vue中也得到很好的支持。
然后再说说Parcel,它一度被人认为是未来最有可能替代Webpack的前端打包工具,主要原因是它几乎零配置,而且打包入口也不仅仅只是JS,另外其打包速度也要比Webpack快。然而,虽然Parcel相比Webpack似乎具有更多优势,但它毕竟还不够成熟,没有Webpack庞大的社区,一旦遇到问题很难在网上快速找到相应解决办法。并且最近Webpack 4.0已经发布,配置相比之前简化了一些,也增加了一些新功能,所以我们完全有理由相信Webpack在未来也会越来越好。
因此,在经过一番体验和对比之后,最终我选择了Webpack。
devDependencies 节点下的模块是我们在开发时需要用的,比如项目中使用的 gulp ,压缩css、js的模块。这些模块在我们的项目部署后是不需要的,所以我们可以使用 -save-dev 的形式安装。像 express 这些模块是项目运行必备的,应该安装在 dependencies 节点下,所以我们应该使用 -save 的形式安装。
你开发一个前端项目,在项目中你需要使用gulp构建你的开发和本地运行环境,这时你就要放到dependencies里。gulp是你用来压缩代码,打包等需要的工具,程序实际运行的时候并不需要,所以放到dev里就ok了。
你写程序要用element-ui,生产环境运行项目时肯定要用到element-ui,这时element-ui就应该安装到dependencies中去。