繁体   English   中英

如何在我的项目中使用本地版本的完整日历?

[英]How can I use a local version of full calendar in my project?

我正在尝试查看是否可以解决我们在完整日历中遇到的几个问题。

我已经使用git clone --recursive git://github.com/fullcalendar/fullcalendar.git克隆了完整的日历存储库并运行yarn install

我已经进入我们的项目使用npm link来链接包,如下所示:

npm link \
 ~/dev/fullcalendar/packages/common \
 ~/dev/fullcalendar/packages/core \
 ~/dev/fullcalendar/packages/interaction \
 ~/dev/fullcalendar/packages-premium/premium-common \
 ~/dev/fullcalendar/packages-premium/resource-common \
 ~/dev/fullcalendar/packages-premium/resource-timeline \
 ~/dev/fullcalendar/packages-premium/scrollgrid \
 ~/dev/fullcalendar/packages-premium/timeline \
 ~/dev/fullcalendar/packages-contrib/vue

但是,这些包似乎并没有很好地相互配合,似乎他们看不到对方,所以当我尝试运行项目时遇到很多很多错误,例如

ERROR in /Users/abarratt/dev/main/src/PODFather-Main/symfather/node_modules/@fullcalendar/common/main.d.ts(96,36):
96:36 Cannot find module './util/scrollbar-width' or its corresponding type declarations.
    94 | export { CssDimValue, ScrollerLike, SectionConfig, ColProps, ChunkConfig, hasShrinkWidth, renderMicroColGroup, getScrollGridClassNames, getSectionClassNames, getSectionHasLiquidHeight, getAllowYScrolling, renderChunkContent, computeShrinkWidth, ChunkContentCallbackArgs, sanitizeShrinkWidth, ChunkConfigRowContent, ChunkConfigContent, isColPropsEqual, renderScrollShim, getStickyFooterScrollbar, getStickyHeaderDates, } from './scrollgrid/util';
    95 | export { Scroller, ScrollerProps, OverflowValue } from './scrollgrid/Scroller';
  > 96 | export { getScrollbarWidths } from './util/scrollbar-width';
       |                                    ^
    97 | export { RefMap } from './util/RefMap';
    98 | export { getIsRtlScrollbarOnLeft } from './util/scrollbar-side';
    99 | export { NowTimer } from './NowTimer';

我假设这里有一些纱线工作区与 npm 的战斗,但也许这只是我需要调整的一些简单的事情,或者我忽略了一些步骤。

任何帮助将非常感激:)

答案似乎是 yalc。 通过使用yarn run build以及yarn run build-contrib进行构建,最后在 vue package 中使用手动yarn run ci (因为 build-contrib 脚本中似乎出现了问题,所以它没有被正确触发),我是然后能够正确地将这些发布和符号链接到我的 npm 项目中,所有工作区链接都已解决。

我编写了以下 bash 脚本来为我完成这项工作: yalc-init-local-fullcalendar-link.sh

#!/bin/sh

if ! command -v yalc &> /dev/null; then
    echo ""
    echo "Hi,"
    echo ""
    echo "You must install yalc globally to link the local full calendar packages."
    echo "You can do that by running"
    echo "sudo npm install yalc -g"
    echo ""
    echo "Andy Barratt"
    echo ""
    exit
fi

START_DIR=`pwd`

if [[ -z "$FULLCALENDAR_DIR" ]]; then
  FULLCALENDAR_DIR="$HOME/dev/fullcalendar"
fi

yalc_publish_packages_in_folder()
{
    cd $@
    for package in */ ; do
        cd $package
        echo "Publishing `pwd`"
        yalc publish
        cd ..
    done
}

# Do some cleanup first
git checkout package.json
rm -rf .yalc
rm yalc.lock
rm -rf node_modules
npm ci

# Build full calendar
cd $FULLCALENDAR_DIR
yarn run build
yarn run contrib:build
# seems one of the other contributing packages has a bug in it,
# so we'll go ahead and run the vue one manually for now.
cd $FULLCALENDAR_DIR/packages-contrib/vue
yarn run ci

yalc_publish_packages_in_folder $FULLCALENDAR_DIR/packages
yalc_publish_packages_in_folder $FULLCALENDAR_DIR/packages-contrib
yalc_publish_packages_in_folder $FULLCALENDAR_DIR/packages-premium

cd $START_DIR
for package in node_modules/@fullcalendar/*/ ; do
    package_name=@fullcalendar/`basename $package`
    echo Linking $package_name
    yalc link $package_name
done

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM