diff --git a/plugins/frontend-search/README.md b/plugins/frontend-search/README.md
index 801d450f300db76af79370ce96f2ac9ef65ba024..b8e96ea4a36770a7731b4c20e30221a43594bc7a 100644
--- a/plugins/frontend-search/README.md
+++ b/plugins/frontend-search/README.md
@@ -43,6 +43,7 @@ The search content are
 * `reactjs <google.com/search?as_q=<search-term>&as_sitesearch=facebook.github.io/react>`
 * `emberjs <emberjs.com>`
 * `stackoverflow <stackoverflow.com>`
+* `npmjs <npmjs.com>`
 
 
 ## Aliases ##
@@ -69,6 +70,7 @@ There are a few aliases presented as well:
 * `reactjs` A shorthand for `frontend reactjs`
 * `emberjs` A shorthand for `frontend emberjs`
 * `stackoverflow` A shorthand for `frontend stackoverflow`
+* `npmjs` A shorthand for `frontend npmjs`
 
 
 ## Author
diff --git a/plugins/frontend-search/_frontend-search.sh b/plugins/frontend-search/_frontend-search.sh
index 252f215707240ce8c11236d919b601c51791be62..b12f829a1c58e52388c7a613b9569ec7406ce3cf 100644
--- a/plugins/frontend-search/_frontend-search.sh
+++ b/plugins/frontend-search/_frontend-search.sh
@@ -37,6 +37,7 @@ function _frontend() {
     'reactjs: Search in React website'
     'emberjs: Search in Ember website'
     'stackoverflow: Search in StackOverflow website'
+    'npmjs: Search in NPMJS website'
   )
 
   _arguments -C \
@@ -110,6 +111,9 @@ function _frontend() {
         stackoverflow)
           _describe -t points "Warp points" frontend_points && ret=0
           ;;
+        npmjs)
+          _describe -t points "Warp points" frontend_points && ret=0
+          ;;
       esac
       ;;
   esac
diff --git a/plugins/frontend-search/frontend-search.plugin.zsh b/plugins/frontend-search/frontend-search.plugin.zsh
index f7485621bf444e479a6bd23e37eef220d733d317..e47735a60fe7fc2ea455f4e95ee236df8f4f24de 100644
--- a/plugins/frontend-search/frontend-search.plugin.zsh
+++ b/plugins/frontend-search/frontend-search.plugin.zsh
@@ -9,7 +9,7 @@ function frontend() {
   fi
 
   # check whether the search engine is supported
-  if [[ ! $1 =~ '(jquery|mdn|compass|html5please|caniuse|aurajs|dartlang|qunit|fontello|bootsnipp|cssflow|codepen|unheap|bem|smacss|angularjs|reactjs|emberjs|stackoverflow)' ]];
+  if [[ ! $1 =~ '(jquery|mdn|compass|html5please|caniuse|aurajs|dartlang|qunit|fontello|bootsnipp|cssflow|codepen|unheap|bem|smacss|angularjs|reactjs|emberjs|stackoverflow|npmjs)' ]];
   then
     echo "Search valid search content $1 not supported."
     echo "Valid contents: (formats 'frontend <search-content>' or '<search-content>')"
@@ -33,6 +33,7 @@ function frontend() {
     echo "* reactjs"
     echo "* emberjs"
     echo "* stackoverflow"
+    echo "* npmjs"
     echo ""
 
     return 1
@@ -99,6 +100,9 @@ function frontend() {
     "stackoverflow")
       url="${url}stackoverflow.com"
       url="${url}/search?q=$2" ;;
+    "npmjs")
+      url="${url}www.npmjs.com"
+      url="${url}/search?q=$2" ;;
     *) echo "INVALID PARAM!"
        return ;;
   esac
@@ -148,3 +152,4 @@ alias emberjs='frontend emberjs'
 
 # search websites
 alias stackoverflow='frontend stackoverflow'
+alias npmjs='frontend npmjs'