Могу ли я заставить node.js требовать чувствительность к регистру?
Так как у моего Mac нет зависящей от регистрационной системы файловой системы, опечатки, связанные с случаем, не будут пойманы при локальном тестировании, однако они не работают на сервере сборки, на котором работает Linux.
Например: require('./mymodule')
найдет ./myModule.js
при работе на Lion, но не в Linux.
Так как я хотел бы, чтобы тесты не выполнялись локально, чтобы не нарушать сборку на сервере, я ищу способ сделать node.js более строгим, поскольку он выдает ошибку если это имя файла не является точным (т.е. имеет разницу в корпусе).
Кто-нибудь знает, как это сделать?
ИЗМЕНИТЬ
Поскольку для этой проблемы не было хорошего решения, я создал valiquire.
Этот инструмент проверяет все требования, найденные во всем проекте nodejs, также обеспечивая правильность корпуса.
Ответы
Ответ 1
Поскольку ваша файловая система hfs не чувствительна к регистру, поиск для "fileName" будет соответствовать "filename" на уровне OS lib, и поэтому node.js будет вести себя одинаково. Поэтому по определению нет обходного пути.
Но по цене переформатирования вы можете изменить формат fs, чтобы использовать регистр hfs.
http://www.coriolis-systems.com/iPartition.php упоминается в этом потоке: https://superuser.com/questions/380330/mac-convert-from-case-sensitive-to-case-insensitive-file-system
Ответ 2
Если вы используете webpack, посмотрите https://github.com/Urthen/case-sensitive-paths-webpack-plugin
Просто установите его для наших сборщиков dev. Это спасло бы нас от того, что я буду делать снимок несколько раз... Который, если вы в этом вопросе, уже, вероятно, происходит 😉
Установка
npm install --save-dev case-sensitive-paths-webpack-plugin
Использование
const CaseSensitivePathsPlugin = require('case-sensitive-paths-webpack-plugin');
const webpackConfig = {
plugins: [
new CaseSensitivePathsPlugin(),
// other plugins ...
],
// other webpack config ...
};
Ответ 3
Без изменения раздела файловой системы ОС вы можете просто использовать пакет, который автоматически обнаруживает тезисы, я использую webpack 2. Он дает предупреждение, когда файл разрешен, но случай отличается. Это не помешает компиляции на OSX/Windows, но у вас будет подсказка. Плюс с пакетом является отличным активом в js dev сегодня
взломанный и не рекомендованный способ заключается в том, чтобы прокладки требовать и принуждать определенный случай или использовать возможные возможные случаи, но это может быть очень уродливым и создать плохую производительность, не говоря о потенциальной опасности для загрузки неправильного файла, если есть файл с переименованием и старый файл не очищается
Ответ 4
Всегда используйте строчные буквы для имен файлов, тогда вам не обязательно будет поддерживать файловую систему или нет.
Напоминает мне, когда люди использовали пробелы в URL-адресах.