在使用 npm 包的时候我很好奇一件事情, 为什么我们 npm install 到 node_module 之后我们能直接 var bar = require('bar')
我们使用的是 CommonJS 模块化 规范 目录结构
--demo
--node_module //可以手动创建文件夹
--bar.js
--demo.js
复制代码
bar.js
var str = {
str: '我是在 node_module 下bar.js'
}
exports.str = str // 必须用模块化标准 导出来
复制代码
demo.js
var str = require('bar') //后缀名可以省略
console.log(str) // { str: { str: '我是在 node_module 下bar.js' } }
复制代码
数据的结果是 { str: { str: '我是在 node_module 下bar.js' } }
这样我们 用的时候就需要 str.str 这样就很不友好了。
我们换一种导出的方法
bar.js
var str = {
str: '我是在 node_module 下bar.js'
}
module.exports = str // 必须用模块化标准 导出来
复制代码
大家可以了解一下 模块化 导出 引入的一些细节
初步的我们已经能实现了 如果我们改变一下目录结构
--demo
--node_module //可以手动创建文件夹
--bar
--bar.js
--demo.js
复制代码
demo.js 引入的时候也要相应做一下处理
var str = require('bar/bar') //后缀名可以省略
console.log(str) // { str: { str: '我是在 node_module 下bar.js' } }
复制代码
这好像也不是我们要的效果,重要的步骤要来了
我们要在 node_module 下边的 bar 文件夹下边 创建一个 package.json 文件
执行 npm init -y 表示不需要提示直接创建 package.json 文件
扫描二维码关注公众号,回复:
6669776 查看本文章
{
"name": "bar",
"version": "1.0.0",
"description": "",
"main": "bar.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"keywords": [],
"author": "",
"license": "ISC"
}
复制代码
注意 我们 入口 main 已经指定了文件夹了
所以我们在用的时候就能实现
var str = require('bar') //后缀名可以省略
console.log(str) // { str: { str: '我是在 node_module 下bar.js' } }
复制代码
转载于:https://juejin.im/post/5d08364c6fb9a07ea4207ef2