css modules是一种解决css命名空间的方案,做为scope CSS的替代方案css
vue-cli-service build --mode [mode]
命令,能够实现不一样模式下有不一样的环境变量。须要在.env.mode文件里指定相应的NODE_ENV值,如NODE_ENV = 'production',let tempO = JSON.parse(process.env.npm_config_argv).original[2]
;或者const argArr = process.argv.splice(2)
;这些方法也能够有以下的使用技巧html
"bn": "npm run build && node replace",
"serve": "node init && vue-cli-service serve",
复制代码
process.env.NODE_ENV === 'production'vue
本地预览 dist 目录须要启动一个 HTTP 服务器来访问 (除非你已经将 publicPath 配置为了一个相对的值),因此以 file:// 协议直接打开 dist/index.html 是不会工做的。 在本地预览生产环境构建最简单的方式就是使用一个 Node.js 静态文件服务器,例如 serve: npm install -g servenode
在vue.config.js里react
module.exports = {
css: {
loaderOptions: {
scss: {
prependData: "@import '~@/assets/style/public.scss';"
}
}
}
}
复制代码
若是声明了一个'style',如alias: { 'style': resolve('static/style') }
在使用时,若是直接@import "style/mixin.scss";是会报错的,须要改成@import "~style/mixin.scss";
css相关文件须要特殊处理webpack
例如,下列代码会将其限制设置为 10kbgit
// vue.config.js
module.exports = {
chainWebpack: config => {
config.module
.rule('images')
.use('url-loader')
.loader('url-loader')
.tap(options => Object.assign(options, { limit: 10240 }))
}
}
复制代码
// vue.config.js
module.exports = {
chainWebpack: config => {
config.plugin('define').tap(args => {
let ori = args[0]['process.env'];
args[0]['process.env'] = {
...ori,
AA: JSON.stringify('<span>cscs</span>'),
BB: 999,
VUE_APP_UU: JSON.stringify('ppooii'),
VUE_APP_UO: JSON.stringify('v_uuu'),
}
return args;
});
}
}
复制代码
// vue.config.js
const path = require('path');
module.exports = {
chainWebpack: config => {
config.module.rule('js')
.use('selfjs')
.loader(path.resolve(__dirname, 'loader/selfjs.js'))
.end()
}
}
复制代码
loader下的selfjs.js文件内容:web
module.exports = function loader(source) {
console.log(source)
source = source + ';;;;;;;;';
// return `export default ${ JSON.stringify(source) }`; // 返回值
return source; // 返回值
// return source; // 返回值
};
复制代码
对应的loader或plugin名称,能够在output.js里查看到vue-cli
名称 | 做用 | 说明 |
---|---|---|
compression-webpack-plugin | gzip压缩插件 | |
webpack-bundle-analyzer | 包分析工具 | cross-env须要再安装 |
webpack-theme-color-replacer | 全局修改主题颜色的插件 | 通常后台系统用 |
webpack-obfuscator | 代码混淆 | |
prerender-spa-plugin | 处理单页面应用的seo,预渲染 | 配合vue-meta-info使用更好 |
copy-webpack-plugin | 将单个文件或整个目录复制到构建目录 | |
webpack-merge | 合并webapck配置项 | |
html-webpack-plugin | 处理html文件 | |
clean-webpack-plugin | 清理以前的打包目录 | |
mini-css-extract-plugin | 分离打包css的插件,由于默认css会被打包到js文件里 | extract-text-webpack-plugin已经不建议使用了 |
babel-loader | 处理js文件 | 配合@babel/core,@babel/preset-env |
postcss-loader | 处理css的浏览器兼容,好比加-webkit-前缀等 | 配合autoprefixer |
设置npm镜像shell
npm config set registry registry.npm.taobao.org
npm config set disturl npm.taobao.org/dist
npm config set electron_mirror npm.taobao.org/mirrors/ele…
npm config set sass_binary_site npm.taobao.org/mirrors/nod…
npm config set phantomjs_cdnurl npm.taobao.org/mirrors/pha…
package.json文件只能锁定大版本,也就是版本号的第一位,并不能锁定后面的小版本,在npm 5时添加package-lock.json。
npm i会根据package-lock.json里的内容来处理和安装依赖而不是package.json。cnpm i不受package-lock.json影响,只会根据package.json进行下载。
npm i 会生成package-lock.json,若是删除了,再从新npm i会生成package-lock.json。cnpm i是不会生成package-lock.json的。
cnpm i xxx@xxx不会跟新到package-lock.json中去。npm i xxx@xxx会跟新到package-lock.json中去。
"dependencies": {
"bluebird": "^3.3.4",
"body-parser": "~1.15.2"
}
复制代码
bluebird的版本号:^3.3.4 body-parse的版本号:~1.15.2
npm | yarn |
---|---|
npm install | yarn |
npm install react --save | yarn add react |
npm uninstall react --save | yarn remove react |
npm install react --save-dev | yarn add react --dev |
npm update --save | npm update --save |
命令 | 含义 | 说明 |
---|---|---|
npm config ls | 查看你的 npm 配置 | |
npm i -S packname | 安装项目(运行时、发布到生产环境时)依赖;例:vue。对应package.json中的dependencies | npm install --save packname |
npm i -D packname | 安装工程构建(开发时、“打包”时)依赖;如babel-loader。对应package.json中的devDependencies | npm install --save-dev packname |
npm list -g --depth 0 | 查看全部已安装的全局包 | |
npx vue-cli-service help | 查看cli全部可用的命令 | vue-cli |
npx vue-cli-service help build | 查看npm run build命令全部可选的参数 | vue-cli |
npx vue-cli-service help inspect | 查看vue inspect全部可选的参数 | vue-cli |
vue inspect > output.js | 将config输出至同目录的output.js文件 | vue-cli |
vue inspect --plugins | 查看全部使用的plugins | vue-cli |
vue-cli-service serve --open | 启动时自动打开浏览器 | vue-cli package.json |
vue-cli-service build --report | 生成 report.html 以帮助分析包内容 | vue-cli package.json |
vue-cli-service build --report-json | 生成 report.json 以帮助分析包内容 | vue-cli package.json |
vue-cli-service build --modern | 会产生两个应用的版本:一个现代版的包,面向支持 ES modules 的现代浏览器,另外一个旧版的包,面向不支持的旧浏览器,旧包带有legacy标志 | vue-cli package.json |
set NODE_ENV=production && set AAA=123 && npm run build | 设置一些环境变量再执行一个命令,mac里的写法会不一样NODE_ENV=production 空格 xxxx | vue-cli package.json |
vue-cli-service build --mode cscs | 用.env.cscs里的环境变量打包一个内容,和npm run build --mode cscs不等价 | vue-cli package.json |
更多cli命令请参考:cli.vuejs.org/zh/guide/cl…