今天我忽然发现个人掘金原创排行已经落到了120位,这是什么缘由,由于我分享的不够多,仍是我分享的不够好,看的人很少,又好几天没和你们几面了,来吧!死也死在分享上面,怎么说呢,今天讲解的东西也不是很深奥的东西,之前一直没有用到这东西,今天好好看了这东西,能够带来很大的方便,我就给你们举两个例子玩玩javascript
我什么都不要我只要前端
今天我就不详细的列出建立目录结构了,看过我webpack 讲解1 -- 讲解的仍是继续原目录结构,可是咱们咱们在build文件夹里加一个文件那就是dev-server.js,说明那一个开发环境。而后咱们在package.json里scrpit 里加一段 开发启动脚本vue
"scripts": {
"build": "node build/build.js",
"dev": "node build/dev-server.js"
},复制代码
目录结构java
咱们在build.js里加上一个webpack内置的plugin,那就是defineplugin,在vue-cli中的配置是这样的
node
那咱们本身的开发环境 和 生产环境会遇到那些问题呢?如何不用手动改变后再进行打包webpack
第一个方法,自动改变环境配置web
1.咱们用vue-cli打包的时候用通常用的都是proxyTable进行反向代理,那接口通常确定都是这样的vue-cli
www.ziksang.com/api复制代码
那在行产环境中。咱们接口域名确定是npm
www.ziksang.com复制代码
若是不在DefinePlugin配置的话咱们就要在生产环境 和 开发环境的时候手动改变这些东西,真的很烦。有些时候忘记改,还要测试重新发包,如今公司发包次数又减小,不让乱发包,那怎么办。看下面json
咱们在build.js中的代码跟我上篇文章同样,我仍是帖出来一下
const webpack = require("webpack");
const rm = require('rimraf')
const ora = require('ora');
const path = require('path')
const chalk = require('chalk');
const spinner = ora({
color: 'green',
text: '正为生产环境打包,耐心点,否则自动关机。。。'
})
spinner.start()
rm(path.resolve(__dirname, '../dist/js'), (err) => {
if (err) throw err
webpack({
entry: './src/main.js',
output: {
path: path.resolve(__dirname, '../dist/js'),
filename: 'ziksang.js',
},
plugins: [
new webpack.DefinePlugin({
LOCAL_ROOT: JSON.stringify("http://ziksang.com")
})
]
}, (err, stats) => {
spinner.stop()
if (err) throw err
console.log(stats.toString({
colors: true,
modules: false,
children: false,
chunks: false,
chunkModules: false
}) + '\n\n')
// style a string
console.log(chalk.blue('好消息!'));
// compose multiple styles using the chainable API
console.log(chalk.blue.bgRed.bold(' 代码已经打包成功,上线吧'));
})
})复制代码
你看我在DefinePlugin中加了LOCAL_ROOT: JSON.stringify("http://ziksang.com")
那咱们对dev-server.js文件中本来不动的把build.js中的代码复制进去而后改为LOCAL_ROOT: JSON.stringify("http://ziksang.com/api")
在main.js中console.log(LOCAL_ROOT)
直接开始 npm run dev你会发现
打印出来的是 "http://ziksang.com/api"
再 npm run build
打印出来的是 "http://ziksang.com"
因环境问题引发的开发代码和生产代码
比方说,我在作项目的时候,微信有一个验签功能,咱们通常喜欢本地联调,后端本地生成不了验签,再加上测试环境,验签功能是一个小时就过去,每次都要重新复制换新的签名,进行测试,我想说真的很烦,那到生产环境那确定要进行验签,咱们用DefinePlugin来解决
我在build.js
DefinePlugin中加了BUILD_EVN: JSON.stringify(true)
那咱们对dev-server.js文件中本来不动的把build.js中的代码复制进去而后改为BUILD_EVN: JSON.stringify(false)
console.log('看看到底有没有验签')
if (BUILD_EVN) {
setTimeout(() => {
alert('验签完毕')
})
}复制代码
咱们npm run build
咱们看到if (BUILD_EVN) 自动转化成了true,就会执行验签
咱们再npm run dev
咱们看到if (BUILD_EVN) 自动转化成了false,说明咱们在开发环境上就不会验签
若是你们有更好的用法请留言谢谢
渣渣前端开发工程师,喜欢钻研,热爱分享和讲解教学, 微信 zzx1994428 QQ494755899
支持我继续创做和感到有收获的话,请向我打赏点吧
若是转载请标注出自@混元霹雳手ziksang