resolve.alias

resolve.alias

在组件之间相互引用时,可能是下面这样的:

import Hello from '../../src.components/Hello';

其中的路径是相对于当前页面的,但是如果嵌套等更为复杂,那么写起来会比较麻烦。但是如果我们通过这样的配置:

resolve: {
    extensions: ['.js', '.vue', '.json'],
    alias: {
      'vue$': 'vue/dist/vue.esm.js',
      '@pages': path.join(__dirname, "..", "src", "pages"),
      "@components": path.join(__dirname, "..", "src", "components"),
      // 注意: 静态资源通过src,不能这么设置。
      // "@assets": path.join(__dirname, "..", "src", "assets"),
    }

其中vue$表示引入vue,就可以像下面这么写:

import Vue from 'vue'

另外,对于@pages和@components我们就可以直接引用了,而省去了一大堆的复杂应用,另外通过@可以消除歧义。如下所示:

import Hello from '@components/Hello';
import App from '@pages/App'
const { upperFirst, camelCase } = require("lodash"); const getWcmContextUrl = require("@ffe/fcore-build-utils/src/wcm-context-url"); const { name, version } = require("./package.json"); // library主要是挂在 window[libraray] const library = upperFirst(camelCase(name.split("/")[1])); // 新增 buildTarget const buildTarget = `${name}/${version}/build`; const { LOWCODE_BUILD_ALL = false } = process.env; module.exports = { alias: { "@": "./src", "@aurora/theme": "@aurora/theme-saas", "@aurora/vue3-icon": "@aurora/vue3-icon-saas", }, plugins: [ [ "@alifd/build-plugin-lowcode", { library, baseUrl: { prod: getWcmContextUrl(), }, buildTarget, engineScope: "@alilc", npmInfo: { package: name, version, }, sourceMap: false, bundleEachComponentMeta: false, // 该配置需设置成true noParse: true, // 开启lowcode/view.tsx作为设计态入口 singleComponent: true, externals: { "@aurora/vue": "var window.Aui.UI.default", "@aurora/core": "var window.Aurora ? window.Aurora.Core : {}", "@aurora/vue-icon": "var window.Aui.Icon", "@aurora/vue-common": "var window.Aui.Common", react: "var window.React", "@alifd/next": "var window.Next", lodash: "var window._", vue: "var window.Vue", "@vue/composition-api": "var window.VueCompositionAPI", "@aurora/render": "var window.Aui.Renderless", }, }, ], [ "@alilc/build-plugin-alt", { type: "component", inject: true, library, openUrl: true, }, ], [ "@ffe/fcore-build-utils/src/build-material-plugin", { // buildEnv为production的时候我们打包当前物料才会是压缩后的物料代码,会去除注释、debugger这些 buildEnv: "production", enableSyncSubComponent: LOWCODE_BUILD_ALL, minimize: true, }, ], ], }; 构建工具用的是@alib/build-scripts,以上是我的build.配置,在 const config = require('./build.lowcode'); const webpackConfig = (args) => { const { onGetWebpackConfig } = args; onGetWebpackConfig((cf) => { console.log('sdsdsd',cf.toConfig().resolve.alias) // 关闭热更新 cf.merge({ devServer: { hot: false, inline:false, }, }); }); }; config.plugins = [...config.plugins, webpackConfig]; module.exports = config; 中打印出.resolve.alias中解析的地址没有node_modules中,为什么?
最新发布
09-10
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值