我创建了一个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.
我错过了什么吗?
我正在尝试向Python distutils添加安装后任务,如如何使用简单的安装后脚本扩展distutils中所述?.该任务应该在已安装的lib目录中执行Python脚本.此脚本生成安装包所需的其他Python模块.
我的第一次尝试如下:
from distutils.core import setup
from distutils.command.install import install
class post_install(install):
def run(self):
install.run(self)
from subprocess import call
call(['python', 'scriptname.py'],
cwd=self.install_lib + 'packagename')
setup(
...
cmdclass={'install': post_install},
)
Run Code Online (Sandbox Code Playgroud)
这种方法有效,但据我所知,有两个不足之处:
PATH,则安装后脚本将使用不同的解释器执行,这可能会导致问题.distutils.cmd.Command.execute.我怎样才能改进我的解决方案?这样做有推荐的方法/最佳做法吗?如果可能的话,我想避免引入另一个依赖.
我想在运行后自动将某些文件从npm包复制到用户的本地目录
npm install my-package
我可以通过声明"files"内部来安装它们package.json.问题是---文件没有放在本地目录中.所以我需要运行postinstall脚本.
但现在我不知道软件包的安装位置(可能在目录树的更高位置),那么如何通过脚本可靠地访问文件并将它们复制到本地目录?
(通过本地目录,我的意思是---从npm install my-package 用户消费包的地方开始.)
UPDATE.似乎postinstall脚本作为npm拥有主进程的进程运行node_modules/my-package,所以我仍然不知道如何访问用户的主目录而不是天真../../.
我正在尝试找出全局安装StriderCD的最佳方法.我通过全局启用的nvm分支安装了node和npm ,并且所有路径都适用于其他构建,但是没有一个需要像这样的post安装.
我已经尝试了两者sudo npm install -g strider,也只是在没有sudo的情况下以root身份安装,但是我总是EACCESS在安装后步骤中遇到bower文件夹的.config和.cache文件夹错误:
> strider@1.6.6 postinstall /usr/local/lib/node_modules/strider
> bower install --allow-root && npm run build
/usr/local/lib/node_modules/strider/node_modules/bower/node_modules/mkdirp/index.js:89
throw err0;
^
Error: EACCES, permission denied '/home/ubuntu/.config'
Run Code Online (Sandbox Code Playgroud)
作为root安装,root没有自己的$ HOME目录的权限,这是非常奇怪的,除非bower正在创建具有错误权限的dirs和文件.谁能解释一下:
> strider@1.6.6 postinstall /usr/local/lib/node_modules/strider
> bower install --allow-root && npm run build
/usr/local/lib/node_modules/strider/node_modules/bower/node_modules/configstore/index.js:56
throw err;
^
Error: EACCES, permission denied '/root/.config/configstore/bower-github.yml'
You don't have access to this file.
at Error (native)
at Object.fs.openSync (evalmachine.<anonymous>:500:18)
at Object.fs.readFileSync (evalmachine.<anonymous>:352:15)
at Object.create.all.get (/usr/local/lib/node_modules/strider/node_modules/bower/node_modules/configstore/index.js:34:29)
at Object.Configstore (/usr/local/lib/node_modules/strider/node_modules/bower/node_modules/configstore/index.js:27:44)
at …Run Code Online (Sandbox Code Playgroud) 在我的内部composer.json,有一个postinstall如下所示的钩子设置:
"scripts" : {
"dist" : "node dist; node_modules/.bin/doccoh src/package.js",
"postinstall" : "node_modules/.bin/grunt setup || true; node_modules/.bin/bower install",
"start" : "node server.js"
}
Run Code Online (Sandbox Code Playgroud)
每当我运行它(在Git/Gnu Bash CLI的Win上)时,我就会结束
command not found. either the command was written wrong or couldn't be found
来自德国CLI错误的粗略翻译.
我尝试将它拆分成多个;/分号分隔的部分,然后首先cd进入该目录,但它最终会出现相同的错误消息.postinstall用简单替换整个命令集ls确实有效.所以我猜问题可能是分号分离或命令的错误使用.但总的来说,我不知道出了什么问题.
注意:我在全球范围内安装了grunt-cli0.1.9 grunt版本和0.4.1版本.
我正在尝试使用post install hook将$(PLATFORM_DIR)/ Developer/Library/Frameworks路径添加到Specta目标Header搜索路径.这显然不是至关重要的,但每次我进行"pod update"时手动添加此路径真的很烦人.
我得到了以下脚本:
post_install do |installer_representation|
installer_representation.project.targets.each do |target|
if target.name == 'Specta'
target.build_configurations.each do |config|
headers = config.build_settings['HEADER_SEARCH_PATHS']
if headers
config.build_settings['HEADER_SEARCH_PATHS'] += ' $(PLATFORM_DIR)/Developer/Library/Frameworks'
end
end
end
end
end
Run Code Online (Sandbox Code Playgroud)
如果有人能指出我正确的方向,我会很高兴,因为我真的被卡住了.
PS我已经注意到这条路径已经被CocoaPods添加了,但我仍然对如何做到这一点非常感兴趣,因为这些知识以后会很有用.谢谢!
我正在使用Heroku来托管我的应用程序和webpack来构建它.
基本上,我正在尝试部署我的应用程序,但它根本不起作用.
安装后似乎没有发生,因为当我加载页面时它缺少文件bundle.js(通过webpack构建).
这是我的package.json脚本:
"main": "server.js",
"scripts": {
"dev": "webpack-dev-server --devtool eval --content-base build/ --colors --hot",
"start": "node server.js",
"postinstall": "webpack -p --config webpack.prod.config.js --progress"
}
Run Code Online (Sandbox Code Playgroud)
当我将项目推送到heroku时,在此过程中没有显示错误.我可以在控制台中看到它正在运行我的postinstall:
remote:> pistou@1.0.0 postinstall/tmp/build_80dea0f9774d7a9a5f8f33ee9c913bca remote:> webpack -p --config webpack.prod.config.js --progress
这是我的整个webpack.prod.config.js文件:
var path = require('path');
var webpack = require('webpack');
var node_dir = path.resolve(__dirname, 'node_modules');
module.exports = {
entry: [
'unveil',
path.resolve(__dirname, 'app/main.js')
],
output: {
path: path.resolve(__dirname, 'dist'),
filename: 'bundle.js',
publicPath: '/'
},
module: {
loaders: [
{ …Run Code Online (Sandbox Code Playgroud) 我一直在尝试安装mysql.我从我的系统中删除了所有mysql安装.遵循以下步骤
现在全新安装brew install mysql,我在hte postinstall步骤中出错.终端输出:
sahilgandhi:~ Sahil$ brew install mysql
==> Downloading https://homebrew.bintray.com/bottles/mysql-5.7.9.el_capitan.bott
Already downloaded: /Library/Caches/Homebrew/mysql-5.7.9.el_capitan.bottle.tar.gz
==> Pouring mysql-5.7.9.el_capitan.bottle.tar.gz
==> /usr/local/Cellar/mysql/5.7.9/bin/mysqld --initialize --user=Sahil --basedir
Last 15 lines from /Users/Sahil/Library/Logs/Homebrew/mysql/01.mysqld:
--initialize
--user=Sahil
--basedir=/usr/local/Cellar/mysql/5.7.9
--datadir=/usr/local/var/mysql
--tmpdir=/tmp
2015-11-15T08:04:05.376664Z 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).
2015-11-15T08:04:05.387829Z 0 [Warning] 'NO_ZERO_DATE', 'NO_ZERO_IN_DATE' and 'ERROR_FOR_DIVISION_BY_ZERO' sql modes should be used with strict mode. They …Run Code Online (Sandbox Code Playgroud) 我制作了一个 debian 包,用于自动安装 oozie。postinst 脚本基本上是一个 shell 脚本,在安装包后运行。我想访问这个脚本中的环境变量。我应该在哪里设置环境变量?
所以我在npm install xyz另一个 npm 模块的 postinstall npm 钩子调用的脚本中运行。(让我们不要深入探讨为什么,但这与 npm 不支持的可选依赖项有关)
npm install moduleA
-> installing moduleA
-> running postinstall hook (my script)
-> my script runs npm install xyz
Run Code Online (Sandbox Code Playgroud)
当我运行脚本本身时,npm install 运行得相当快,但是当我在 postinstall 挂钩中安装模块时,脚本会等待锁定文件至少 1 分钟。(或者我假设)
当我在 npm 中启用详细日志级别时,我得到如下输出:
[a lot more lines above]
npm verb addNamed "latest" is being treated as a dist-tag for invert-kv
npm info addNameTag [ 'invert-kv', 'latest' ]
npm verb addNameTag registry:https://registry.npmjs.org/invert-kv already in flight; waiting
npm verb addNamed "1.0.0" is a plain …Run Code Online (Sandbox Code Playgroud)