Vueフロントエンドパッケージングの詳細なプロセス

Vueフロントエンドパッケージングの詳細なプロセス

1. パッケージ化コマンドを追加する

package.jsonに設定を追加する
npm run buildによってオンラインで公開されたコードはデバッグが容易ではない

注文:

  • ①npm run build:dev 開発・デバッグ環境
  • ②npm run build:prod オンラインデバッグ環境

 "build:dev": "vue-cli-service ビルド --mode dev",
    "build:prod": "vue-cli-service ビルド --mode prod"

2. パッケージ化されたコードを実行する

dist/index.html
直接ダブルクリックしないでください。 dist/index.html
httpコンテナで実行する必要があります: serve tomcat nginx iis
今回はserveを使う

サーブをダウンロード: npm i -g serve

エラー:

エラー: EPERM: 操作は許可されていません。mkdir 'C:\Program Files\nodejs\node global\node_modules.staging'

解決策:ユーザー -> 個人ユーザー -> .npmrcファイルを削除

パッケージ化されたディレクトリを起動します: serve dist

3. パッケージ化して異なる環境変数を指定する

環境変数を追加します:

  • ①開発:ルートディレクトリに.env.devファイルを作成する(package.jsonのモードに対応)
  • ② オンライン: ルートディレクトリに.env.prodファイルを作成する(package.jsonのモードに対応)

変数を動的に指定する必要がある場合は、 process.env.NODE_ENVなどを使用します。

// .env.dev
##開発環境 NODE_ENV=development
## 変数は VUE_APP_ で始まります。VUE_APP_URL=http://www.dev.com

// .env.prod
##本番環境 NODE_ENV=production
VUE_APP_URL=http://www.prod.com

4. カスタムファイルをパッケージ化する

  • vuecliwebpack
    をベースにしているwebpack
  • VueCli ゼロ構成
  • 設定は不要ですvue.config.jsを指定できます。

npm run build:prodにはコメント、空白行、圧縮などが欠けています。

4.1 サードパーティのパッケージを削除する

コードの内訳:

  • ① サードパーティパッケージ: vue elementui axiosなど
  • ②開発コード:自分で書いたもの

サードパーティのパッケージを削除する:サードパーティが提供するcdn (無料または有料) を使用する
ステップ:

  • ①サードパーティパッケージのcdnリソースを見つけてpublic/index.html
    に追加します。 public/index.html
  • ② 前回のimportを削除する
  • vue.config.jsでサードパーティパッケージの除外を設定する
モジュール.エクスポート = {
  // ファイルアクセスの相対パスを開きます プロジェクトのルートディレクトリを介した独立したプロジェクトアクセス publicPath: './',
  // 開発時には、オンラインでマップする必要はありません --> コードのデバッグを容易にするためにコードマッピングを提供します。productionSourceMap: process.env.NODE_ENV == 'development' ? true: false,
  // webpack を設定する
  Webpack の設定: config => {
    // config---vuecli デフォルト構成Object.assign(config, {
      // 依存パッケージを除外する externals: {
        vue: 'ビュー'
      }
    })
  },
}

4.2 gzip圧縮

下載npm i -D compression-webpack-plugin

5. 梱包エラー:

エラー TypeError: 未定義のプロパティ 'tapPromise' を読み取ることができません
TypeError: 未定義のプロパティ 'tapPromise' を読み取ることができません

エラーの原因:スキャフォールディング構成 gzip パッケージはこのバージョンをサポートしていません
解決策: npm install [email protected] --save-dev を使用します。
vue.config.jsで設定する

パッケージ化により、gz で終わるファイルが生成されます。

CompressionWebpackPlugin = require('compression-webpack-plugin') を設定します。

Webpack の設定: config => {
    プラグイン = [
      新しい圧縮Webpackプラグイン({
        // 圧縮アルゴリズム: 'gzip',
        // 圧縮ファイルの一致テスト: /\.js$|\.css$/,
        // 圧縮しきい値が 10k より大きい場合: 10240 
      })
    ]
    process.env.NODE_ENV == 'production'の場合{
      config.mode = "プロダクション"
      config.plugins = [...config.plugins, ...plugins]
    } それ以外 {
      config.mode = '開発'
    }
  },

ブラウザビュー:

  • リクエストヘッダー: Accept-Encoding: gzip, deflate, br
  • レスポンスヘッダー: Content-Encoding: gzip

パッケージ展開モード:

ハッシュ: パッケージ化後、distはhttpコンテナ内で直接実行されます。これはオンラインと一貫性があります。

履歴:パッケージ化後、スキャフォールディングの更新では404は発生しませんが、オンラインでは404が発生します。
解決策:フロントエンドのコードはバックエンドと一緒にデプロイする必要があり、バックエンドはフロントエンドへのジャンプを担当します。

Vue フロントエンドのパッケージ化の詳細なプロセスに関するこの記事はこれで終わりです。Vue フロントエンドのパッケージ化の詳細なプロセスに関するより関連性の高いコンテンツについては、123WORDPRESS.COM の以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • Hbuilderを使用してvueプロジェクトをAPPにパッケージ化するプロセスと、遭遇した落とし穴について簡単に説明します。
  • Electron + Vueでデスクトップをパッケージ化する操作手順の詳細説明
  • Vueプロジェクトをパッケージ化し、BaiduのBAEを通じてオンラインで公開するプロセスの詳細な説明

<<:  CSS で div 凹角スタイルを実装するサンプル コード

>>:  ラベルタグの使用時に発生する問題の分析と解決策

推薦する

HTMLとCSSを使用して、自分だけの暖かい男「Dabai」を作成します

最終結果はこんな感じです、かわいいでしょう… PS: HTML と CSS の知識があればベストです...

MySQL のデータの偶発的な削除の解決策と kill ステートメントの原則

mysql が誤ってデータを削除しました削除ステートメントを使用して誤ってデータ行を削除する誤ってデ...

MySQL マスタースレーブレプリケーションでエラーをスキップする方法

1. 従来のbinlogマスタースレーブレプリケーション、エラー報告をスキップする方法 mysql&...

ウィンドウ表示効果を実現するJavaScript

この記事では、ウィンドウ表示効果を実現するためのJavaScriptの具体的なコードを参考までに紹介...

DockerでGDBを使用するときにブレークポイントを入力できない問題を解決する

質問docker で gdb を実行すると、ブレークポイントに到達しますが、ブレークポイントに入るこ...

HTMLでvueとel​​ement-uiを直接参照する方法

コードは次のようになります。 <!DOCTYPE html> <html> ...

MySQL 5.7.18 インストーラーのインストール ダウンロード グラフィック チュートリアル

この記事では、MySQL 5.7.18インストーラーの詳細なインストールチュートリアルを参考までに記...

単一の MySQL テーブル内の行数が 500 万を超えてはいけないのはなぜですか?

今日は、興味深いトピックについてお話ししましょう。データベースとテーブルを分割することを検討する前に...

MySQL マスタースレーブ遅延問題の解決方法

今日は、マスタースレーブ遅延が発生する理由とその対処方法について説明します。しっかり座って出発の準備...

MySQLの権限とインデックスの詳細な説明

mysql の権限とインデックスmysql の最高権限ユーザーは root です。 CREATE U...

MySQL で複数のフィールドを連結する詳細な例

MySQL クエリ結果の行フィールドの結合は、次の 2 つの関数を使用して実装できます。 1. co...

Dockerボリューム権限管理の詳細な説明

ボリュームデータボリュームは Docker の重要な概念です。データ ボリュームは、1 つ以上のコン...

JS 継承の詳細

目次序文準備する要約する継承方法プロトタイプ継承プロトタイプチェーン継承コンストラクタの借用(クラス...

JS で async と await を使用する方法

目次1. 非同期2. 待つ: 3. 包括的なアプリケーション1. 非同期async 、非同期コードが...

コンテンツタイプの説明、つまりHTTPリクエストヘッダーのタイプ

コンテンツ タイプについて学ぶには、まずそれが何であるか、そして何に使用されるかを知る必要があります...