Dva: 怎么配置 import 绝对路径?

Created on 1 Dec 2016  ·  9Comments  ·  Source: dvajs/dva

我们的项目往往是这样的:

import { getColor } from '../../../utils/tools';

但是我们想用绝对路径,因为这种情况特别多
webpack 被一个叫 dora 的给搞掉了,没法配置

想要的结果:

import { getColor } from '/utils/tools';

求解决....... orz
@sorrycc

Most helpful comment

楼主好,我们都遭受相同的困扰啊;相对路径太烦了
请问下你是如何配置webpack.config.js我在根目录下建立了webpack.config.js,然后再里面输入以下内容:

var path = require('path');
module.exports = {
    resolve:{
        alias:{
            '@':path.join(__dirname, 'src')
        }
    }
}

npm start之后,报以下错误
qq 20170824112331

请问楼主如何配置webpack.config.js的,不会是将webpack的全部配置都写一遍吧!

All 9 comments

@llqgit 可以配置webpack,根目录下面建立 webpack.config.js 就可以了,可以参看 dva 的 example

然后 alias

config.resolve.alias = {
      'util': path.join(process.cwd(), './utils'),
};

多谢了 @nikogu 我其实是想让任意模块都能用项目的根路径的
就像

import a from '/components/a';
import b from '/components/dir/b';
import c from '/components/user/info/ListPage';

如果用 alias 好像不能这样
只能:

config.resolve.alias = {
      'util': path.join(process.cwd(), './utils'),
};

然后:

import a from 'a';

但是我不想所有 components 都声明在 webpack.config.js
我是想用 / 去指代 项目的根目录
从而省去 import 时的 无限 ../../../

可以用 resolve.modulesDirectories
假设 components 就在 project/src 下

resolve: {
   modulesDirectories: [ 'src', 'node_modules' ]
}

webpack 会依次寻找 ./src/components/a../src/components/a .....

alias 也是可以实现的

alias: {
   components: path.join(process.cwd(), './src/components')
}

Thanks '⌴' @TrainL

楼主好,我们都遭受相同的困扰啊;相对路径太烦了
请问下你是如何配置webpack.config.js我在根目录下建立了webpack.config.js,然后再里面输入以下内容:

var path = require('path');
module.exports = {
    resolve:{
        alias:{
            '@':path.join(__dirname, 'src')
        }
    }
}

npm start之后,报以下错误
qq 20170824112331

请问楼主如何配置webpack.config.js的,不会是将webpack的全部配置都写一遍吧!

less文件里的import的相对路径没法用alias解决,有什么办法吗

这个问题只是我根据实际问题产生的一个奇思妙想,具体可以根据楼上 52linyuepeng 的方案解决一些,不明白的查一下webpack文档。没有找到其他更满意的方案。关于 less 就是另一个问题的范围了。

现在的思路是,最好不要产生过多层级的目录关系,这样不仅维护麻烦,也难以查找功能代码。项目结构要尽可能的简单,扁平,有利于产品以后的拓展。

ps: 同时我也希望能学到更好的方法来解决目录地狱问题,just 4 fun

我在现在这个时间点,还是遇到了这个问题。
https://github.com/sorrycc/roadhog/blob/master/README_zh-cn.md#alias
这是这个问题的标准解决方案,希望可以帮到后面看到人。

Was this page helpful?
0 / 5 - 0 ratings