<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??一站式輕松地調用各大LLM模型接口,支持GPT4、智譜、豆包、星火、月之暗面及文生圖、文生視頻 廣告
                ## 文件壓縮 `webpack`使用`UglifyJSPlugin`來壓縮生成的文件。 `npm i --save-dev uglifyjs-webpack-plugin` 修改`webpack.config.js` ~~~ // ...省略前面引入的模塊 const UglifyJSPlugin = require('uglifyjs-webpack-plugin') module.exports = { // ...省略一些配置 plugin: [ new UglifyJSPlugin() ] } ~~~ `npm run build`發現打包文件的體積小了好多。 ![](https://box.kancloud.cn/df72734d3e34ca75234d2bc8b1bd54ff_968x318.png) ## 指定環境 > 許多 library 將通過與 process.env.NODE_ENV 環境變量關聯,以決定 library 中應該引用哪些內容。例如,當不處于生產環境中時,某些 library 為了使調試變得容易,可能會添加額外的日志記錄(log)和測試(test)。其實,當使用 process.env.NODE_ENV === 'production' 時,一些 library 可能針對具體用戶的環境進行代碼優化,從而刪除或添加一些重要代碼。我們可以使用 webpack 內置的 DefinePlugin 為所有的依賴定義這個變量: > 修改正式環境配置文件`webpack.config.js`: ~~~ module.exports = { plugins: [ new webpack.DefinePlugin({ 'process.env': { 'NODE_ENV': JSON.stringify('production') } }) ] } ~~~ 重新編譯之后發現`vendor.[hash].js`又變小了。 ![](https://box.kancloud.cn/46289487d62ccaca3c0ac9dbe0fae7b3_882x322.png) ## 優化緩存 剛才我們把`[name].[hash].js`改成了`[name].[chunkhash].js`后,這樣`app.[hash].js`和`vendor.[chunkhash].js`不一樣了。 然鵝,現在又有一個問題了,你隨便修改一處代碼,例如`Home.js`,隨便改一個字,你就會發現`home.[hash].js`hash變化的同時,`vendor.[chunkhash].js`名字也變了,這不行啊,這和原來沒拆分之前是一樣的,我們本意是`vendor.[chunkhash].js`作為內置庫的名字是不變的,一直緩存在用戶本地的。。。 針對這一情況,[官方文檔](https://doc.webpack-china.org/guides/caching)推薦了一個插件[HashedModuleIdsPlugin](https://doc.webpack-china.org/plugins/hashed-module-ids-plugin): ~~~ module.exports = { // 定義webpack插件 plugins: [ new webpack.DefinePlugin({ 'process.env': { 'NODE_ENV': JSON.stringify('production') } }), new webpack.HashedModuleIdsPlugin() ] } ~~~ 現在你打包,修改代碼再試試,是不是名字不變啦?錯了,現在打包,我發現名字還是變了,經過比對文檔,我發現還要加一個`runtime`代碼抽取: ~~~ module.exports = { plugins: [ new webpack.DefinePlugin({ 'process.env': { 'NODE_ENV': JSON.stringify('production') } }), new webpack.HashedModuleIdsPlugin(), new webpack.optimize.CommonsChunkPlugin({ name: 'vendor' }), new webpack.optimize.CommonsChunkPlugin({ name: 'runtime' }) ] } ~~~ 為什么要加上這句話呢?看下[解釋](https://doc.webpack-china.org/concepts/manifest)。 **注意:引入順序在這里就很重要了,`CommonsChunkPlugin`的`vendor`實例,就必須在`runtime`實例之前被引入。** ## 公共資源路徑 想象一個場景,我們的靜態文件放在了單獨的靜態服務器上面,那我們打包的時候呢,怎么樣才能讓靜態文件的鏈接定位到靜態服務器上面呢?(就是怎樣匹配靜態資源路徑到靜態服務器路徑)。 看官方文檔[Public Path](https://doc.webpack-china.org/guides/public-path) `webpack.config.js`里面有一個`output`的配置項,配置項里面增加一個`publicPath`,當我們用`/`,就相當于當前路徑,如果你想要改成別的目錄,也就是項目部署的地方不是服務器的根目錄,就改這里就好了。 ~~~ module.exports = { // ...省略其他配置項 output: { publicPath: '/' } } ~~~ ## 打包優化 一般的,我們打包上線的時候,都是直接目錄替換的,但是現在我們看看`dist`文件夾里面有好多文件,因為每次打包這些文件都沒有被清空掉,所以我們希望在我們打包項目的時候,能有一些工具幫我們清理掉舊的文件: `npm install clean-webpack-plugin --save-dev` 安裝完之后修改一下正式環境配置文件`webpack.config.js`: ~~~ const CleanWebpackPlugin = require('clean-webpack-plugin') // ...省略一些代碼 module.exports = { // 定義webpack插件 plugins: [ // ...省略一些代碼 new CleanWebpackPlugin(['dist']) ] } ~~~ 現在`npm run build`試試,是不是之前的都清空了。當然我們之前的api文件夾也被清空了,不過沒關系哦~本來就是測試用的。 ## 抽取css 目前我們的`css`是直接打包進`js`里面的,我們希望能單獨生成`css`文件。 我們使用[extract-text-webpack-plugin](https://github.com/webpack-contrib/extract-text-webpack-plugin)來實現: `npm install --save-dev extract-text-webpack-plugin` 修改正式環境配置文件`webpack.config.js`: ~~~ const ExtractTextPlugin = require('extract-text-webpack-plugin') // ...省略一些代碼 module.exports = { // ...省略一些代碼 module. { rules: [ { test: /\.css$/, use: ExtractTextPlugin.extract({ fallback: 'style-loader', use: 'css-loader' }) } ] }, // 定義webpack插件 plugins: [ // ...省略一些代碼 new ExtractTextPlugin({ filename: '[name].[contenthash:5].css', allChunks: true }) ] } ~~~ `npm run build`之后發現已經會單獨生成`css`文件了。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看