中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Vue3.x源碼調試的實現

發布時間:2021-06-03 17:04:31 來源:億速云 閱讀:338 作者:Leah 欄目:web開發

這篇文章給大家介紹Vue3.x源碼調試的實現,內容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。

如何調試vue3.x的ts源碼

  • 官網說使用 yarn dev 命令就可以對其進行調試,可是運行該命令后,是生成過后的代碼,不能對其編寫的ts源碼進行調試。

  • 其實再生成對應的sourcemap文件,便可以原汁原味的調試。

  • 先看下幾個截圖:

Vue3.x源碼調試的實現 

Vue3.x源碼調試的實現

如果這是你想要的調試效果,下面請看下如何生成sourcemap文件。

生成sourcemap文件

rollup.js中文文檔

// rollup.config.js
export default {
 // 核心選項
 input,   // 必須
 external,
 plugins,

 // 額外選項
 onwarn,

 // danger zone
 acorn,
 context,
 moduleContext,
 legacy

 output: { // 必須 (如果要輸出多個,可以是一個數組)
  // 核心選項
  file,  // 必須
  format, // 必須
  name,
  globals,

  // 額外選項
  paths,
  banner,
  footer,
  intro,
  outro,
  sourcemap,
  sourcemapFile,
  interop,

  // 高危選項
  exports,
  amd,
  indent
  strict
 },
};

可以看到output對象有個sourcemap屬性,其實只要配置上這個就能生成sourcemap文件了。 在vue-next項目中的rollup.config.js文件中,找到createConfig函數

function createConfig(output, plugins = []) {
 const isProductionBuild =
  process.env.__DEV__ === 'false' || /\.prod\.js$/.test(output.file)
 const isGlobalBuild = /\.global(\.prod)?\.js$/.test(output.file)
 const isBunlderESMBuild = /\.esm\.js$/.test(output.file)
 const isBrowserESMBuild = /esm-browser(\.prod)?\.js$/.test(output.file)

 if (isGlobalBuild) {
  output.name = packageOptions.name
 }

 const shouldEmitDeclarations =
  process.env.TYPES != null &&
  process.env.NODE_ENV === 'production' &&
  !hasTSChecked

 const tsPlugin = ts({
  check: process.env.NODE_ENV === 'production' && !hasTSChecked,
  tsconfig: path.resolve(__dirname, 'tsconfig.json'),
  cacheRoot: path.resolve(__dirname, 'node_modules/.rts2_cache'),
  tsconfigOverride: {
   compilerOptions: {
    declaration: shouldEmitDeclarations,
    declarationMap: shouldEmitDeclarations
   },
   exclude: ['**/__tests__']
  }
 })
 // we only need to check TS and generate declarations once for each build.
 // it also seems to run into weird issues when checking multiple times
 // during a single build.
 hasTSChecked = true

 const externals = Object.keys(aliasOptions).filter(p => p !== '@vue/shared')

 output.sourcemap = true // 這句話是新增的
 return {
  input: resolve(`src/index.ts`),
  // Global and Browser ESM builds inlines everything so that they can be
  // used alone.
  external: isGlobalBuild || isBrowserESMBuild ? [] : externals,
  plugins: [
   json({
    namedExports: false
   }),
   tsPlugin,
   aliasPlugin,
   createReplacePlugin(
    isProductionBuild,
    isBunlderESMBuild,
    isGlobalBuild || isBrowserESMBuild
   ),
   ...plugins
  ],
  output,
  onwarn: (msg, warn) => {
   if (!/Circular/.test(msg)) {
    warn(msg)
   }
  }
 }
}

關于Vue3.x源碼調試的實現就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

九寨沟县| 句容市| 黔西县| 扶风县| 成安县| 贵港市| 紫阳县| 尉犁县| 息烽县| 保靖县| 罗源县| 尼勒克县| 内丘县| 河西区| 贵南县| 永福县| 原平市| 武隆县| 沭阳县| 泸水县| 东乌珠穆沁旗| 东乡县| 大渡口区| 洛隆县| 衡东县| 砚山县| 遂溪县| 江油市| 灌云县| 泰来县| 敖汉旗| 东光县| 灵山县| 安吉县| 洛扎县| 江都市| 格尔木市| 枣庄市| 娱乐| 阳新县| 久治县|