Tag: path

在npm发布上更改根目录

我可以在发布时更改Node.js npm包的根目录吗? 我拥有的是以下内容: ├── lib ├── package.json ├── .npmignore ├── src │ ├── index.js │ └── sub │ └── mymodule.js └── test In /src是我所有的ES2015源代码。 我用Babel将其转录到我的/lib目录中。 我的package.json的main指向lib/index.js 。 之后,我可以做一个npm publish (我的.npmignore设置为src所以只有lib将被发布)。 现在我的包被部署到npmjs.com,在另一个包中,我可以用import index from 'mypackage'来导入它。 到现在为止还挺好。 但是如果我想直接导入sub/mymodule.js呢? 我必须import mymodule from 'mypackage/lib/sub/mymodule'编写import mymodule from 'mypackage/lib/sub/mymodule' 。 我真正想要的是import mymodule from 'mypackage/sub/mymodule'没有/lib/在我的path中import mymodule from 'mypackage/sub/mymodule' 。 我怎样才能做到这一点? npm文档中提到了我可以在package.json设置的directories.lib ,但它似乎会被完全忽略。 […]

节点path.relative返回不正确的path

我敢肯定,我一定是错的,但在Node中, path.relative似乎输出错误的目录,或至less有一个我没有料到: > path.relative('a/file.js', 'a/file.css') > '../file.css' 不过,我期望的结果是这样的: > './file.css' 本质上,我试图计算两个path中的差异,以便一个文件require另一个文件, ../file.css显然是错误的我的要求,因为这两个文件都在a目录中。 输出表明file.css位于父目录中。 我错过了什么?

Node-gyp找不到msbuild.exe

您好,我是在Windows上创build本地节点模块的过程,但每当我运行node-gyp build binding.gyp命令我得到一个错误,指出"error: Can't find "msbuild.exe". Do you have Microsoft Visual Studio C++ 2008 installed?" 。 我安装了Visual Studio 2013,msbuild目录是C:\Windows\Microsoft.NET\Framework\v3.5\msbuild.exe. 我尝试添加到PATHvariables,我能够启动cmd提示符,并运行msbuild.exe ,它会返回版本,似乎工作,但由于某种原因node-gyp无法检测到,我甚至尝试修改node-gyp中的build.js文件,使其指向msbuild位置,但失败。

NODE.JS – 如何正确处理操作系统和URL风格的“path”混合?

在我的node.js应用程序中,我有可以传递的函数 OS风格的path,例如c:\ my \ docs \ mydoc.doc(或者/usr/docs/mydoc.doc或者其他什么都是本地的) 文件URL例如file:// c:/my/docs/mydoc.doc(我不确定'\'的有效性在??中) 无论哪种方式,我需要检查它们是否指向一个特定的位置,这个位置总是以本地OS样式的path存在,例如c:\ mydata \ directory \或/ usr / mydata /目录 显然,对于OS风格的path,我可以将它们作为string进行比较 – 它们应该总是相同的(它们是用path创build的),但FILE:// URL不一定使用path.sep,所以不会使用“string match “? 任何build议,以最好的方式来处理(我个人试图打破所有的一个或多个斜线,然后检查每一个?

Node.js抓取,转换图像src – >完整的URL

我使用Cheerio(https://github.com/MatthewMueller/cheerio)来抓取网站,并获取我正在进行的项目的图像。 我想知道是否有一个简单的方法与Node.js(或另一个包)将$(img).attr('src')转换为完全限定的URL? 有时我会得到“image.jpg”和其他时间“../../image.jpg”,其他时间“//somepath/image.jpg”。 也许我只是错过了某种types的正则expression式感谢您的时间:)

NodeJS – 将相对path转换为绝对path

在我的文件系统我的工作目录是在这里: C:\ TEMP \ A \ B \ C \ d 在b \ bb下有文件:tmp.txt C:\ TEMP \ A \ B \ BB \ tmp.txt 如果我想从我的工作目录转到这个文件,我将使用这个path: "../../bb/tmp.txt" 如果文件不存在,我想logging完整path并告诉用户: “文件C:\ temp \ a \ b \ bb \ tmp.txt不存在” 。 我的问题: 我需要一些函数 将相对path“../../bb/tmp.txt” 转换为绝对path:“C:\ temp \ a \ b \ bb \ tmp.txt” 在我的代码中应该是这样的: console.log("The file" + […]

Node.js:获取已安装的npm包的(绝对)根path

任务 我正在寻找一种通用的方式来获取Node.js中安装的npm包的(绝对)根path。 问题 我知道require.resolve ,但是这会给我入口点(主模块的path),而不是包的根path。 以bootstrap-sass为例。 说它在本地安装在项目文件夹C:\dev\my-project 。 那么我在找的是C:\dev\my-project\node_modules\bootstrap-sass 。 require.resolve('bootstrap-sass')将返回C:\dev\my-project\node_modules\bootstrap-sass\assets\javascripts\bootstrap.js 。 我可以想到如何获取包的根path的几种方法: 解决scheme#1 var packageRoot = path.resolve('node_modules/bootstrap-sass'); console.log(packageRoot); 这对在本地安装在node_modules文件夹中的软件包工作正常。 但是,如果我在一个子文件夹中,我需要parsing../node_modules/bootstrap-sass ,并且嵌套更多的文件夹会变得更复杂。 另外,这对全球安装的模块不起作用。 解决scheme#2 var packageRoot = require.resolve('bootstrap-sass') .match(/^.*[\/\\]node_modules[\/\\][^\/\\]*/)[0]; console.log(packageRoot); 这将适用于安装在node_modules文件夹中的本地和全局模块。 正则expression式将匹配最后一个node_modulespath元素和下面的path元素。 但是,如果一个包的入口点被设置为另一个包(例如package.json "main": "./node_modules/sub-package" ),则这将失败。 解决scheme#3 var escapeStringRegexp = require('escape-string-regexp'); /** * Get the root path of a npm package installed in node_modules. * […]

require.main.require工作,但不在摩卡testing

我写了一个全局函数来要求我的应用程序/框架的某些文件: global.coRequireModel = function(name) { // CRASH happens here return require.main.require('./api/_co' + name + '/_co' + name + '.model'); } 这个模块在/ components / coGlobalFunctions中。 这是我的主要应用程序app.js需要这样的: require('./components/coGlobalFunctions'); 然后在其他模块中使用框架中的“东西”,我使用: var baseScheme = coRequireModel('Base'); 这工作,但不是在摩卡testing,给我一个“错误:无法find模块”在require.main.require调用之前。 看来testing来自另一个源文件夹。 但是我认为require.main.require会把相对连接模块的方面拿掉。 编辑: 生活在api / user中的示例testing文件: var should = require('should'); var app = require('../../app'); var User = require('./user.model'); …

在没有全局安装的情况下可以在Node模块中包含一个命令行?

我有一个小的Node模块,在bin目录中包含一个命令行脚本。 "bin": { "generate": "./bin/generate.js" } generate.js脚本可以正确执行。 这一切工作正常,如果我运行npm install -g 。 但我不想全局安装,只有命令generate模块文件夹内的工作。 如果我从模块文件夹运行npm install ,它会正确安装node_modules子目录中的所有依赖node_modules 。 但是,然后从命令generate像给我“没有这样的文件或目录”。 谢谢。

在node.js中获取父目录名称

我正在使用node.js,我想要获取文件的父目录名称。 我有文件"../test1/folder1/FolderIWant/test.txt" 我想要"FolderIWant" 我努力了: var path = require('path'); var parentDir = path.dirname(filename); 但它返回../test1/folder1/FolderIWant