webpack问题,这个path.join干啥用的,直接写相对路径不行?

output: {
        path: path.join(__dirname, './dist'),
        filename: '[name].js',
        publicPath: '/dist/'
    },

写成./dist,为何这么写(下面是我的写法)

var path = require('path');
// 定义路径
var ROOT_PATH = path.resolve(__dirname);
var APP_PATH = path.resolve(ROOT_PATH, 'app');
var BUILD_PATH = path.resolve(ROOT_PATH, 'build');

module.exports = {
    // 项目的文件夹
    entry: './src/app.js',
    // 输出的文件名 合并以后的js会命名为bundle.js
    module: {
        // 加载器
        loaders: [{
            test: /\.css$/,
            loader: 'style-loader!css-loader'
        }, {
            test: /\.(png|jpg|gif)$/,
            loader: 'url-loader?limit=8192'
        }, ]
    },
    output: {
        path: BUILD_PATH,
        filename: '[name].js'
    },
};
阅读 5.3k
3 个回答

主要还是为了容错。

如果你只是单单写了

output: {
    path: './build',
    filename: '[name].js'
}

你觉得这个相对的./build指的是哪个目录?到底是相对“谁”啊?

其实相对的不是你期望的当前脚本所在目录,而是相对于你在哪个目录执行的webpack命令,就是cli里常说的current working directory。所以如果当你执行命令的目录和webpack.config.js在同一个目录时,没有任何问题。不过要是换个目录执行,你试试看嘛^^

var webpack = require('webpack')
var path = require('path')

module.exports = {
    entry: path.join(__dirname ,'js/app/index.js'),
    output: {
        path: path.join(__dirname, '../public/js'),
        filename: 'merge.js'
    }
}

var entry1 = path.join(__dirname,'js/app/index.js')

console.log(entry1)

在上面代码中,我将入口文件设置为path.join(__dirname,'js/app/index.js'),那么这个路径到底是什么呢?这还不简单,我把它打印出来看一下不就知道了吗?
6f2bd5b1e5d05fb4.png

你确定这是绝对路径吗?路径最开始明明是/User啊?
LINUX系统中 绝对路径 以“/”为起始 例:/home/user1/abc.txt。
在我的电脑中就是/Users

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题