私はフロントエンドデベロッパーであり、フロントエンドプロジェクトをOneDriveに保持しています。 Node.jsが依存関係を整理する方法により、各プロジェクトにはnode_modules
ディレクトリには、同期に永久に時間がかかる数十メガバイトの小さなファイルがあります。
同期を回避するにはどうすればよいですかnode_modules
ディレクトリをプロジェクトをOneDriveに保持しますか?
これは古い質問であることはわかっていますが、同じ問題に遭遇しました。私が遭遇した解決策は、最初に空の_node_modules
_フォルダーを作成し、それをクラウドと同期することでした。
空のフォルダが同期されると、次に入りました
OneDriveの設定→フォルダーを選択
_node_modules
_フォルダの選択を解除しました。
次に、プロジェクトルートフォルダーで_npm install
_を実行すると、OneDriveがクラウド内のフォルダーのコンテンツとの競合を検出します。同期しません。
このアプローチの欠点は、OneDriveが同期エラーを生成することですが、私のニーズにはうまく機能しているように見えました。
OneDriveは名前でディレクトリを除外することを許可していません。これは すぐには変更されません :
[UserVoiceリクエストに対するOneDriveの代表的な応答:]現在はありません
一部のユーザーが推奨 OneDrive設定で同期したくないディレクトリのチェックを外しますが、 OneDriveファイルオンデマンド で不可能になりました。
ただし、Node.js側で調整することでこれを解決できます。 node_modules
ディレクトリを別の場所へのfileシンボリックリンクにします。
# Open any place outside OneDrive
cd D:\node_dependencies
# Make a symlink target. After linking, node_modules for your project
# will be installed here
mkdir node_modules_for_my_project
# Open the project directory
cd <the project directory>
# Make a *file* link from node_modules to the newly created directory.
# You will need to delete existing node_modules directory if it exists
cmd /C "mklink node_modules D:\node_dependencies\node_modules_for_my_project"
ここで重要なのは、ディレクトリではなく、ファイルシンボリックリンクを作成することです1。 OneDriveはこのシンボリックリンクを認識して同期しませんが、Node.jsは意図したとおりに動作します。
OneDrive v17.3.7101.1018でテストされ、オンデマンドのOneDriveファイルが有効になっています。
これは普遍的な解決策ではありません。これの欠点は、エクスプローラ、Powershell、およびその他のツールがnode_modules
をディレクトリとして認識しないことです。
ただし、Node.jsベースのコードエディターはそれを問題なく読み取ります。
TypeScriptユーザーの場合は、モジュール解決の問題を回避するために、node_modulesをパスに追加します。
Tsconfig.jsonに次を追加します。
"paths": {
[... some paths ...],
"*": [
"node_modules/*"
]
}
編集:まだいくつかの問題があります。プロジェクトをビルドできますが、ts-nodeとnodemonが起動しますCannot find module
エラー。さて、これはまだ問題です:(
最善の解決策は、プロジェクトが保存され、モジュールがインストールされるOneDriveフォルダーの外に「ローカル」フォルダーを作成することです。これが実際のプロジェクトです。
OneDriveに同期するには、手動で「parallel」フォルダーを作成し、「RoboCopy」を使用して必要なコンテンツのみをコピーします。その後、このタスクをスケジュールできます。
無視するファイルとフォルダの名前/ワイルドカードは.gitignoreファイルからコピーされました
ソリューションはいくつかの記事に基づいています:
gUIを使用して、スケジュールする.batタスクファイルを作成することもできます。 MicrosoftのGUI & ChoEazyCopy GUIの方が優れています