我创建了一个module(webapp-module-storage),它有以下定义:
的package.json
{
"dependencies": {
...
},
"devDependencies": {
"gulp": "^3.9.1",
...
},
"name": "webapp-module-storage",
"scripts": {
"postinstall": "gulp build",
"test": "gulp test"
}
}
Run Code Online (Sandbox Code Playgroud)
我想我可以在安装它时使用我的模块在另一个模块中:
npm install github:myorg/webapp-module-storage#master但是,当我安装我的模块时,我收到此错误:
找不到当地的一口气
尝试运行:npm install gulp
截图
我的理解是,它gulp与我的模块一起发货,因为我宣布它,devDependencies但看起来我的npm postinstall脚本找不到gulp.
我错过了什么吗?
目前我总是跑,sudo npm install <package-name>但据我所知,这是不正确的.
我希望有机会不以root用户身份使用它.我遵循了一些建议并使用了这个命令,sudo chown -R <username> ~/.npm但它不起作用......
例如,它是我的输出 npm install jade
...
npm http 200 https://registry.npmjs.org/amdefine
npm http GET https://registry.npmjs.org/amdefine/-/amdefine-0.0.5.tgz
npm http 200 https://registry.npmjs.org/amdefine/-/amdefine-0.0.5.tgz
npm ERR! Error: EACCES, symlink '../jade/bin/jade'
npm ERR! { [Error: EACCES, symlink '../jade/bin/jade'] errno: 3, code: 'EACCES', path: '../jade/bin/jade' }
npm ERR!
npm ERR! Please try running this command again as root/Administrator.
Run Code Online (Sandbox Code Playgroud)
如您所见,下载已成功启动,但随后失败了..
我想知道在npm上禁止sudo的最佳方法是什么?
我是nodejs和gulp的新手.我在一个nodejs项目上工作,我必须在所有文件上运行jslint.我正在使用gulp用于此目的.
我的问题是,为了在cli上运行gulp,我不想全局安装gulp,也不想更新我的路径变量,所以我使用package.json文件在本地项目中安装了gulp和其他节点模块
cd myproject
npm安装
因为我不想全局安装gulp并且想要运行本地gulp,所以在我的package.json文件中添加了脚本,就像这个问题中给出的一样
{
"name": "",
"version": "1.0.0",
"main": "index.js",
"private": true,
"dependencies": {
"async": "1.5.0"
},
"devDependencies": {
"gulp": "^3.9.0",
"gulp-jslint": "^0.2.2"
},
"scripts": {
"gulp": "./node_modules/.bin/gulp" // is this correct?
}
}
Run Code Online (Sandbox Code Playgroud)
在我的myproject文件夹中添加了一个gulpfile.js
var gulp = require('gulp');
// include plug-ins
var jslint = require('gulp-jslint');
// JS hint task
gulp.task('lint', function() {
gulp.src('./common/srp/*.js')
.pipe(jslint())
.pipe(jslint.reporter('default'));
});
gulp.task("default", ["lint"]);
Run Code Online (Sandbox Code Playgroud)
但现在我在myproject文件夹中的命令行,当我运行gulp和gulp lint时,我收到一个错误
user1-VirtualBox:〜/ myproject $ gulp lint
/usr/local/node-v0.10.26-linux-x64/bin/gulp没有这样的文件或目录
它寻找全局节点模块中的gulp.
有没有办法让gulp在cli上运行而无需全局安装并更新PATH变量.
任何帮助将不胜感激谢谢
我一直致力于新的Web开发项目,在实践中,这些项目node_modules在部署时并不需要他们的文件夹.如果我能够gulpfile.js为每个项目创建一个小项目,而不是每个项目的node_modules文件夹中包含的6000多个文件,这对我来说更适合我,这些只是我在这台机器上使用过的.
我只使用Gulp编译SASS并加前缀和缩小我的CSS.我不需要担心任何其他类型的部署问题,但文档说我需要两者:Gulp的全局和本地副本.
我之前使用过全局安装gulp npm install gulp -g.然后我克隆了一个现有的项目,这要求我使用自己的gulp.现在当我gulp -v从我的项目文件夹外面做一个时,我得到了这样的不匹配.
C:\Users\userme>
[11:14:05] CLI version 3.8.11
[11:14:05] Local version 1.0.0
Run Code Online (Sandbox Code Playgroud)
当我从我的项目文件夹中吞下一口之后,我就明白了.
C:\project\new\tools>
[11:14:26] CLI version 3.8.11
[11:14:26] Local version 3.8.11
Run Code Online (Sandbox Code Playgroud)
现在我无法使用gulp正确合并我的JS文件(我在min文件中得到了一些奇怪的格式错误),我怀疑它与这种不匹配有关.
注意 - 我确实尝试通过使用更新全局gulp npm update gulp@3.8.11 -g但没有发生任何事情.我仍然得到不匹配.
更新来描述问题: 我正在使用gulp将多个JS文件合并到一个main.js文件中.我在合并文件中获得的格式在其中有语法错误.
合并文件中的预期输出 -
...
define('utils/knockoutBindings/slider',['require','ko','jquery'],function(require) {
'use strict';
var ko = require('ko');
var $ = require('jquery');
...
Run Code Online (Sandbox Code Playgroud)
合并文件中的实际输出(下面的1行代码错误地替换了上面的4行) -
...
var'utils/knockoutBindings/slider',['require','ko','jquery'],function(require) {
...
Run Code Online (Sandbox Code Playgroud)
看起来gulp代码中存在一个问题,但是其他用户使用相同的代码,并且它在最终结果中运行良好.我们发现的唯一区别在于我的gulp版本不匹配.
我可以以某种方式跳过本地安装Gulp到项目?
我在全局安装了Gulp,将它作为依赖项添加到package.json中.但是Gulp仍希望在本地安装Local gulp not found in ...消息.如果我进行本地安装,Gulp将按节点复制到我的项目中.
有没有办法跳过Gulp的本地安装?我希望能够从命令行在整个服务器上运行它并在全局范围内管理它.
我正在尝试在 Docker 容器中使用 gulp。
我有以下内容Dockerfile
FROM golang:alpine
RUN apk --update add --no-cache git nodejs
RUN npm install --global gulp
ENV GOPATH=/go PATH=$PATH:/go/bin
VOLUME ["/go/src/github.com/me/sandbox", "/go/pkg","/go/bin"]
WORKDIR /go/src/github.com/me/sandbox
CMD ["gulp"]
Run Code Online (Sandbox Code Playgroud)
我有以下内容docker-compose.yml
version: '2'
services:
service:
build: ./service
volumes:
- ./service/src/:/go/src/github.com/me/sandbox
Run Code Online (Sandbox Code Playgroud)
docker-compose build构建成功,但是当我运行时docker-compose up,我收到以下错误消息
Recreating sandbox_service_1
Attaching to sandbox_service_1
service_1 | [22:03:40] Local gulp not found in /go/src/github.com/me/sandbox
service_1 | [22:03:40] Try running: npm install gulp
Run Code Online (Sandbox Code Playgroud)
我尝试了几种不同的方法来尝试修复它。
gulp-cli全局和本地安装gulp尝试在本地安装npm install gulpnpm …我尝试了本教程,基本上设置了我的gulp项目并激活了更少的处理和观察.有用.现在我想在全球范围内安装模块,以便从机器上的每个设备访问它们,而不是为每个项目安装它们:
npm install --global gulp-less
npm install --global gulp-watch
npm install --global gulp-autoprefixer
npm install --global gulp-plumber
Run Code Online (Sandbox Code Playgroud)
现在我想在我的项目文件夹中运行gulp,但是gulp无法找到全局安装的模块:
$ cd /my/project
$ gulp
module.js:327
throw err;
^
Error: Cannot find module 'gulp-less'
at Function.Module._resolveFilename (module.js:325:15)
at Function.Module._load (module.js:276:25)
at Module.require (module.js:353:17)
at require (internal/module.js:12:17)
at Object.<anonymous> (/root/temp/gulptest/gulpfile.js:9:12)
at Module._compile (module.js:409:26)
at Object.Module._extensions..js (module.js:416:10)
at Module.load (module.js:343:32)
at Function.Module._load (module.js:300:12)
at Module.require (module.js:353:17)
at require (internal/module.js:12:17)
Run Code Online (Sandbox Code Playgroud)
如何让它工作并使用全局gulp模块?
我正在尝试从我的 Dockerfile 运行 gulp 任务。这是我的 Dockerfile
#
# Node.js w/ Bower & Grunt Dockerfile
#
# https://github.com/digitallyseamless/docker-nodejs-bower-grunt
#
# Pull base image.
FROM library/node:4
MAINTAINER Digitally Seamless <docker@digitallyseamless.com>
# Install Bower & Grunt
RUN npm install -g bower grunt-cli && \
echo '{ "allow_root": true }' > /root/.bowerrc
RUN npm install gulp -y
RUN gulp ng-config --env development
# Define working directory.
WORKDIR /data
COPY . /data
# Define default command.
EXPOSE 7000
CMD ["bash"]
Run Code Online (Sandbox Code Playgroud)
请注意,在上面的 Dockerfile 中,我正在尝试安装 gulp 并运行 …
gulp ×8
npm ×4
node.js ×3
docker ×2
npm-install ×2
command-line ×1
dockerfile ×1
gulp-less ×1
gulp-sass ×1
gulp-watch ×1
macos ×1
package.json ×1
post-install ×1
sudo ×1