猿问

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'

    },

};


qq_笑_17
浏览 1612回答 3
3回答

慕标5832272

主要还是为了容错。如果你只是单单写了output: {    path: './build',    filename: '[name].js'}你觉得这个相对的./build指的是哪个目录?到底是相对“谁”啊?其实相对的不是你期望的当前脚本所在目录,而是相对于你在哪个目录执行的webpack命令,就是cli里常说的current working directory。所以如果当你执行命令的目录和webpack.config.js在同一个目录时,没有任何问题。不过要是换个目录执行,你试试看嘛^^

ITMISS

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'),那么这个路径到底是什么呢?这还不简单,我把它打印出来看一下不就知道了吗?你确定这是绝对路径吗?路径最开始明明是/User啊?LINUX系统中 绝对路径 以“/”为起始 例:/home/user1/abc.txt。在我的电脑中就是/Users
随时随地看视频慕课网APP

相关分类

Java
我要回答