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…