2016-08-12 2 views
1

Я читал документацию несколько раз, но я все еще смущен, когда захочу (или не хочу) использовать запись recordsPath в конфигурации webpack. Может ли кто-нибудь объяснить в более непрофессиональных условиях?Какова цель «recordsPath» в конфигурации webpack?

Также является ответом на вышеперечисленное для webpack 1.x против 2.x?

ответ

2

Из документации:

магазина/загрузка состояние компилятора из/в файл JSON. Это приведет к постоянным идентификаторам модулей и кусков.

Ожидается абсолютный путь. recordsPath используется для recordsInputPath и recordsOutputPath, если они остались неопределенными.

Это необходимо при использовании замены Hot Code между несколькими вызовами компилятору.

https://webpack.github.io/docs/configuration.html#recordspath-recordsinputpath-recordsoutputpath

Для примера предположим, что простое приложение со следующей структурой:

./src 
├── index.js 
└── test.js 

Где ./src/index.js является:

require('./test.js'); 

и ./src/test.js это просто пустой файл ,

Используйте файл API для компиляции файла, например.

const webpack = require('webpack'); 

const webpackConfig = { 
    entry: { 
    'app': [ 
     path.resolve(__dirname, './src') 
    ] 
    }, 
    output: { 
    path: path.resolve(__dirname, './dist'), 
    filename: '[name].js' 
    }, 
    recordsPath: path.resolve(__dirname, './recordsPath.json') 
}; 

const compiler = webpack(webpackConfig,() => {}); 

Он будет генерировать ./recordsPath.json:

{ 
    "modules": { 
    "byIdentifier": { 
     "src/index.js": 0, 
     "src/test.js": 1 
    }, 
    "usedIds": { 
     "0": 0, 
     "1": 1 
    } 
    }, 
    "chunks": { 
    "byName": { 
     "app": 0 
    }, 
    "byBlocks": {}, 
    "usedIds": { 
     "0": 0 
    } 
    } 
} 

Чтобы понять случай использования для модуля идентификаторами, вам необходимо ознакомиться с тем, как расслоения сценариев. В случае применения выше, то выход будет эквивалентен:

(function(modules) { 
    // Module resolution logic. 
    // Excluded for brevity. 
}) 
([ 
    function(module, exports, __webpack_require__) { 
    // ./index.js 
    __webpack_require__(1); 
    }, 
    function(module, exports) { 
    // ./test.js 
    } 
]); 

Как вы можете видеть, внутренне, WebPack использует идентификаторы для обозначения модулей. recordsPath предоставляет эти идентификаторы.

+1

Я также обнаружил, что это необходимо для кэширования LT при использовании с CommonChunksPlugin. – wlingke

+0

Итак, это создаст файл внутри моего проекта на моей локальной машине, который я затем добавлю в .gitignore и тому подобное? –

+0

@RafaelEyng выглядит как рекомендация проверить его - https://webpack.js.org/configuration/other-options/#recordspath – olore

Смежные вопросы