<commit_before>---
title: "npm 2.0.0でローカルモジュールを使ってrequire('../../../')を回避する"
author: azu
layout: post
date : 2014-10-04T15:27
category: JavaScript
tags:
    - Node.js
    - JavaScript

---

## 概要

npm 1.xの時はローカルにあるディレクトリへの相対パスを`dependency`フィールドで指定できなかった。

そのため、ローカルにあるモジュールをたどるには`require("../../../")`のような指定が必要になっていた(ライブラリに切り出せればいいけど、アプリケーション固有のUtilsなどがある場合これ面倒になる)

- [Better local require() paths for Node.js](https://gist.github.com/branneman/8048520 "Better local require() paths for Node.js")
- [ avoiding ../../../../../../..](https://github.com/substack/browserify-handbook#avoiding- " avoiding ../../../../../../..")
- [How I Work Around The require(“../../../../../../../”) Problem In NodeJS | ThoughtStream.new :derick_bailey](http://lostechies.com/derickbailey/2014/02/20/how-i-work-around-the-require-problem-in-nodejs/ "How I Work Around The require(“../../../../../../../”) Problem In NodeJS | ThoughtStream.new :derick_bailey")

そのため、`npm link`や`node_modules`にそのまま追加してやるなど、微妙なハックがひつようだった。

しかし、npm 2.0.0で`dependency`フィールドに[Local Paths](https://www.npmjs.org/doc/files/package.json.html#local-paths "Local Paths")の指定がサポートされたので、ローカルに置いたディレクトリをモジュールとして使えるので、require("local-library"); みたいな書き方で使えるようになった。

プロジェクトに依存したUtilとかを定義するのに便利という話。

## ローカルモジュールの作成

今回のサンプルプロジェクトは以下においてあります。

- [azu/npm-localpaths-example](https://github.com/azu/npm-localpaths-example "azu/npm-localpaths-example")

ローカルモジュールの作り方は同じで、<commit_msg>add issue attributes<commit_after>---
title: "npm 2.0.0でローカルモジュールを使ってrequire('../../../')を回避する"
author: azu
layout: post
date : 2014-10-04T15:27
category: JavaScript
tags:
    - Node.js
    - JavaScript
issue: https://github.com/efcl/efcl.github.io/issues/36

---

## 概要

npm 1.xの時はローカルにあるディレクトリへの相対パスを`dependency`フィールドで指定できなかった。

そのため、ローカルにあるモジュールをたどるには`require("../../../")`のような指定が必要になっていた(ライブラリに切り出せればいいけど、アプリケーション固有のUtilsなどがある場合これ面倒になる)

- [Better local require() paths for Node.js](https://gist.github.com/branneman/8048520 "Better local require() paths for Node.js")
- [ avoiding ../../../../../../..](https://github.com/substack/browserify-handbook#avoiding- " avoiding ../../../../../../..")
- [How I Work Around The require(“../../../../../../../”) Problem In NodeJS | ThoughtStream.new :derick_bailey](http://lostechies.com/derickbailey/2014/02/20/how-i-work-around-the-require-problem-in-nodejs/ "How I Work Around The require(“../../../../../../../”) Problem In NodeJS | ThoughtStream.new :derick_bailey")

そのため、`npm link`や`node_modules`にそのまま追加してやるなど、微妙なハックがひつようだった。

しかし、npm 2.0.0で`dependency`フィールドに[Local Paths](https://www.npmjs.org/doc/files/package.json.html#local-paths "Local Paths")の指定がサポートされたので、ローカルに置いたディレクトリをモジュールとして使えるので、require("local-library"); みたいな書き方で使えるようになった。

プロジェクトに依存したUtilとかを定義するのに便利という話。

## ローカルモジュールの作成

今回のサンプルプロジェクトは以下においてあります。

- [azu/npm-localpaths-example](https://github.com/azu/npm-localpaths-example "azu/npm-localpaths-example")

ローカルモジュールの作り方は同じで、
{'fraction_non_alphanumeric': 0.19863247863247863, 'fraction_numerical': 0.023931623931623933, 'mean_word_length': 4.062283737024221, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 3, 'https://': 9, 'lorem ipsum': 0, 'www.': 2, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '2547341', 'n_tokens_mistral': 1510, 'n_tokens_neox': 1362, 'n_words': 143}